• MybatisPlusGenerator代码生成工具配置教程


    MybatisPlusGenerator代码生成工具配置教程

    此文档所述为mybatis-plus-generator 3.5.2版本,主要讲述Mybatis-Plus代码生成器的配置及使用。

    添加pom.xml依赖

    		<dependency>
    			<groupId>com.baomidou</groupId>
    			<artifactId>mybatis-plus-generator</artifactId>
    			<version>3.5.2</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.velocity</groupId>
    			<artifactId>velocity-engine-core</artifactId>
    			<version>2.3</version>
    		</dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    添加模板文件

    在项目工程resources/templates路径下新建以下几个模板,注意文件名要一致。

    controller.java.vm

    package ${package.Controller};
    
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import java.util.*;
    import com.github.common.utils.Response;
    import com.github.common.constant.CommonConstant;
    import com.github.common.utils.Query;
    import $!{package.Entity}.$!{entity};
    import $!{package.Service}.$!{entity}Service;
    #if(${restControllerStyle})
    import org.springframework.web.bind.annotation.RestController;
    #else
    import org.springframework.stereotype.Controller;
    #end
    #if(${superControllerClassPackage})
    import ${superControllerClassPackage};
    #end
    
    /**
     * <p>
     * $!{table.comment} 前端控制器
     * </p>
     *
     * @author ${author}
     * @since ${date}
     */
    #if(${restControllerStyle})
    @RestController
    #else
    @Controller
    #end
    @RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end")
    #if(${kotlin})
    class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end
    
    #else
    #if(${superControllerClass})
    public class ${table.controllerName} extends ${superControllerClass} {
    #else
    public class ${table.controllerName} {
    #end
    
        @Autowired
        private $!{entity}Service $!{table.entityPath}Service;
    
        /**
         * 通过ID查询$!{table.comment}
         *
         * @param id ID
         * @return com.github.common.utils.Response
         */
        @GetMapping("/{id}")
        public Response get(@PathVariable Long id) {
            if (id == null){
                return Response.errorResponse("ID不能为空");
            }
            return Response.success(this.$!{table.entityPath}Service.getById(id));
        }
    
    
        /**
         * 分页查询$!{table.comment}
         *
         * @param params
         * @return com.github.common.utils.Response
         */
        @RequestMapping("/page")
        public Response page(@RequestParam Map<String, Object> params, $!{entity} $!{table.entityPath}) {
            return Response.success(this.$!{table.entityPath}Service.page(new Query<$!{entity}>().getPage(params), new QueryWrapper<$!{entity}>()
                .eq(CommonConstant.IS_DELETE, CommonConstant.INT_STATUS_NORMAL)));
        }
    
        /**
         * 添加$!{table.comment}
         * @param  $!{table.entityPath}  实体
         * @return com.github.common.utils.Response<$!{entity}>
         */
        @PostMapping("/add")
        public Response add(@RequestBody $!{entity} $!{table.entityPath}) {
            //TODO 添加数据校验
            boolean res = this.$!{table.entityPath}Service.save($!{table.entityPath});
            if (res){
                return Response.successResponse("操作成功");
            }
            return Response.errorResponse("操作失败");
        }
    
        /**
         * 删除$!{table.comment}
         * @param id ID
         * @return com.github.common.utils.Response<$!{entity}>
         */
        @DeleteMapping("/{id}")
        public Response delete(@PathVariable Long id) {
            if (id == null){
                return Response.errorResponse("ID不能为空");
            }
            $!{entity} $!{table.entityPath} = new $!{entity}();
            $!{table.entityPath}.setId(id);
            $!{table.entityPath}.setUpdateTime(new Date());
            $!{table.entityPath}.setIsDelete(CommonConstant.INT_STATUS_DEL);
            boolean res = this.$!{table.entityPath}Service.updateById($!{table.entityPath});
            if (res){
                return Response.successResponse("操作成功");
            }
            return Response.errorResponse("操作失败");
        }
    
        /**
         * 编辑$!{table.comment}
         * @param  $!{table.entityPath}  实体
         * @return com.github.common.utils.Response<$!{entity}>
         */
        @PutMapping("/edit")
        public Response edit(@RequestBody $!{entity} $!{table.entityPath}) {
            if ($!{table.entityPath}.getId() == null){
                return Response.errorResponse("ID不能为空");
            }
            //TODO 添加数据校验
            $!{table.entityPath}.setUpdateTime(new Date());
            boolean res = this.$!{table.entityPath}Service.updateById($!{table.entityPath});
            if (res){
                return Response.successResponse("操作成功");
            }
            return Response.errorResponse("操作失败");
        }
    
    }
    #end
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132

    service.java.vm

    package ${package.Service};
    
    import ${package.Entity}.${entity};
    import ${superServiceClassPackage};
    
    /**
     * <p>
     * $!{table.comment} 服务类
     * </p>
     *
     * @author ${author}
     * @since ${date}
     */
    #if(${kotlin})
    interface ${table.serviceName} : ${superServiceClass}<${entity}>
    #else
    public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
    
    }
    #end
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    serviceImpl.java.vm

    package ${package.ServiceImpl};
    
    import ${package.Entity}.${entity};
    import ${package.Mapper}.${table.mapperName};
    import ${package.Service}.${table.serviceName};
    import ${superServiceImplClassPackage};
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Service;
    
    /**
     * <p>
     * $!{table.comment} 服务实现类
     * </p>
     *
     * @author ${author}
     * @since ${date}
     */
    @Slf4j
    @Service
    #if(${kotlin})
    open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
    
    }
    #else
    public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} {
    
    }
    #end
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    entity.java.vm

    package ${package.Entity};
    
    #foreach($pkg in ${table.importPackages})
    import ${pkg};
    #end
    #if(${swagger})
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    #end
    #if(${entityLombokModel})
    import lombok.Data;
    #if(${chainModel})
    import lombok.experimental.Accessors;
    #end
    #end
    
    /**
     * <p>
     * $!{table.comment}
     * </p>
     *
     * @author ${author}
     * @since ${date}
     */
    #if(${entityLombokModel})
    @Data
      #if(${chainModel})
    @Accessors(chain = true)
      #end
    #end
    #if(${table.convert})
    @TableName("${schemaName}${table.name}")
    #end
    #if(${swagger})
    @ApiModel(value = "${entity}对象", description = "$!{table.comment}")
    #end
    #if(${superEntityClass})
    public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end {
    #elseif(${activeRecord})
    public class ${entity} extends Model<${entity}> {
    #elseif(${entitySerialVersionUID})
    public class ${entity} implements Serializable {
    #else
    public class ${entity} {
    #end
    #if(${entitySerialVersionUID})
    
        private static final long serialVersionUID = 1L;
    #end
    ## ----------  BEGIN 字段循环遍历  ----------
    #foreach($field in ${table.fields})
    
    #if(${field.keyFlag})
    #set($keyPropertyName=${field.propertyName})
    #end
    #if("$!field.comment" != "")
      #if(${swagger})
        @ApiModelProperty("${field.comment}")
      #else
        /**
         * ${field.comment}
         */
      #end
    #end
    #if(${field.keyFlag})
    ## 主键
      #if(${field.keyIdentityFlag})
        @TableId(value = "${field.annotationColumnName}", type = IdType.AUTO)
      #elseif(!$null.isNull(${idType}) && "$!idType" != "")
        @TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
      #elseif(${field.convert})
        @TableId("${field.annotationColumnName}")
      #end
    ## 普通字段
    #elseif(${field.fill})
    ## -----   存在字段填充设置   -----
      #if(${field.convert})
        @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill})
      #else
        @TableField(fill = FieldFill.${field.fill})
      #end
    #elseif(${field.convert})
        @TableField("${field.annotationColumnName}")
    #end
    ## 乐观锁注解
    #if(${field.versionField})
        @Version
    #end
    ## 逻辑删除注解
    #if(${field.logicDeleteField})
        @TableLogic
    #end
        private ${field.propertyType} ${field.propertyName};
    #end
    ## ----------  END 字段循环遍历  ----------
    
    #if(!${entityLombokModel})
    #foreach($field in ${table.fields})
      #if(${field.propertyType.equals("boolean")})
        #set($getprefix="is")
      #else
        #set($getprefix="get")
      #end
    
        public ${field.propertyType} ${getprefix}${field.capitalName}() {
            return ${field.propertyName};
        }
    
      #if(${chainModel})
        public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
      #else
        public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
      #end
            this.${field.propertyName} = ${field.propertyName};
      #if(${chainModel})
            return this;
      #end
        }
    #end
    ## --foreach end---
    #end
    ## --end of #if(!${entityLombokModel})--
    
    #if(${entityColumnConstant})
      #foreach($field in ${table.fields})
        public static final String ${field.name.toUpperCase()} = "${field.name}";
    
      #end
    #end
    #if(${activeRecord})
        @Override
        public Serializable pkVal() {
      #if(${keyPropertyName})
            return this.${keyPropertyName};
      #else
            return null;
      #end
        }
    
    #end
    #if(!${entityLombokModel})
        @Override
        public String toString() {
            return "${entity}{" +
      #foreach($field in ${table.fields})
        #if($!{foreach.index}==0)
            "${field.propertyName}=" + ${field.propertyName} +
        #else
            ", ${field.propertyName}=" + ${field.propertyName} +
        #end
      #end
            "}";
        }
    #end
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156

    mapper.java.vm

    package ${package.Mapper};
    
    import ${package.Entity}.${entity};
    import ${superMapperClassPackage};
    #if(${mapperAnnotation})
    ##import org.apache.ibatis.annotations.Mapper;
    #end
    
    /**
     * <p>
     * $!{table.comment} Mapper 接口
     * </p>
     *
     * @author ${author}
     * @since ${date}
     */
    #if(${mapperAnnotation})
    ##@Mapper
    #end
    #if(${kotlin})
    interface ${table.mapperName} : ${superMapperClass}<${entity}>
    #else
    public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {
    
    }
    #end
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    mapper.xml.vm

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="${package.Mapper}.${table.mapperName}">
    
    #if(${enableCache})
        <!-- 开启二级缓存 -->
        <cache type="${cacheClassName}"/>
    
    #end
    #if(${baseResultMap})
        <!-- 通用查询映射结果 -->
        <resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
    #foreach($field in ${table.fields})
    #if(${field.keyFlag})##生成主键排在第一位
            <id column="${field.name}" property="${field.propertyName}" />
    #end
    #end
    #foreach($field in ${table.commonFields})##生成公共字段
            <result column="${field.name}" property="${field.propertyName}" />
    #end
    #foreach($field in ${table.fields})
    #if(!${field.keyFlag})##生成普通字段
            <result column="${field.name}" property="${field.propertyName}" />
    #end
    #end
        </resultMap>
    
    #end
    #if(${baseColumnList})
        <!-- 通用查询结果列 -->
        <sql id="Base_Column_List">
    #foreach($field in ${table.commonFields})
            ${field.columnName},
    #end
            ${table.fieldNames}
        </sql>
    
    #end
    </mapper>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    生成代码工具

    MybatisPlusGenerator.java

    /**
     * Copyright (c) 2022-2030 XXX公司 All rights reserved.
     * <p>
     * 1414798079@qq.com
     * <p>
     * 版权所有,侵权必究!
     */
    
    package com.github.modules.gen;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.baomidou.mybatisplus.generator.FastAutoGenerator;
    import com.baomidou.mybatisplus.generator.config.OutputFile;
    import com.baomidou.mybatisplus.generator.config.rules.DateType;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    /**
     * <p>
     * Mybatis-Plus代码生成器
     * </p>
     *
     * @author songfayuan
     * @date 2022/5/2 10:43 AM
     */
    public class MybatisPlusGenerator {
    
        public static void main(String[] args) {
            //test为自定义的文件生成路径,根据业务进行变更
            String path = "test";
            //父包名,test为最终生成的包位置,替换成自己的即可
            String parentPackage = "com.github.modules." + path;
            //mapper.xml生成位置,test变更为自己的即可
            String mapperXmlPath = "/src/main/resources/mapper/" + path;
            //作者名字
            String author = "songfayuan";
    
            //数据库连接信息
            String url = "jdbc:mysql://121.11.22.33:3306/hzt-dev?useUnicode=true&useSSL=false&characterEncoding=utf8";
            String username = "demo";
            String password = "demo1234...";
    
            //表名集合
            List<String> tables = new ArrayList<>();
            tables.add("app_rent_seeking_info");
    
            FastAutoGenerator.create(url, username, password)
                    //全局配置
                    .globalConfig(builder -> {
                        builder
                                .fileOverride()  //开启覆盖之前生成的文件
                                .disableOpenDir()  //禁止打开输出目录
                                .outputDir(System.getProperty("user.dir") + "/src/main/java")   //指定输出目录
                                .author(author)   //作者名
    //                            .enableSwagger()     //开启 swagger 模式
                                .dateType(DateType.ONLY_DATE)   //时间策略
                                .commentDate("yyyy-MM-dd HH:mm:ss");   //注释日期
                    })
                    //包配置
                    .packageConfig(builder -> {
                        builder.parent(parentPackage)     //父包名
                                .entity("entity")               //Entity 包名
                                .service("service")             //Service 包名
                                .serviceImpl("service.impl")    //Service Impl 包名
                                .mapper("mapper")               //Mapper 包名
                                .xml("mapper.xml")              //Mapper XML 包名
                                .controller("controller")       //Controller 包名
                                .other("config")                //自定义文件包名	输出自定义文件时所用到的包名
                                .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + mapperXmlPath));//指定xml位置
                    })
                    //策略配置
                    .strategyConfig(builder -> {
                        builder.addInclude(tables)
    //                            .addTablePrefix("app_")//表名前缀,配置后生成的代码不会有此前缀,建议表名的驼峰格式命名,方便寻找对应的文件资料
                                .serviceBuilder()
                                .formatServiceFileName("%sService")//服务层接口名后缀
                                .formatServiceImplFileName("%sServiceImpl")//服务层实现类名后缀
                                .entityBuilder()
                                .enableLombok()//实体类使用lombok,需要自己引入依赖
                                //.logicDeleteColumnName("status")//逻辑删除字段,使用delete方法删除数据时会将status设置为1。调用update方法时并不会将该字段放入修改字段中,而是在条件字段中
                                .enableTableFieldAnnotation()//加上字段注解@TableField
                                .controllerBuilder()
                                .formatFileName("%sController")//控制类名称后缀
                                .enableRestStyle()
                                .mapperBuilder()
                                .superClass(BaseMapper.class)
                                .formatMapperFileName("%sMapper")
                                .enableMapperAnnotation()
                                .formatXmlFileName("%sMapper");
                    })
                    .execute();
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97

    CommonConstant.java

    此文件为常量,按需取用。

    /*
     *    Copyright (c) 2018-2025, songfayuan All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions are met:
     *
     * Redistributions of source code must retain the above copyright notice,
     * this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above copyright
     * notice, this list of conditions and the following disclaimer in the
     * documentation and/or other materials provided with the distribution.
     * Neither the name of the XX科技 developer nor the names of its
     * contributors may be used to endorse or promote products derived from
     * this software without specific prior written permission.
     * Author: songfayuan (1414798079@qq.com)
     */
    
    package com.github.common.constant;
    
    /**
     * @author songfayuan
     * @date 2017/10/29
     */
    public interface CommonConstant {
        /**
         * token请求头名称
         */
        String REQ_HEADER = "Authorization";
    
        /**
         * token分割符
         */
        String TOKEN_SPLIT = "Bearer ";
    
        /**
         * jwt签名
         */
        String SIGN_KEY = "PIG";
    
        /**
         * 删除
         */
        String STATUS_DEL = "1";
    
        /**
         * 删除
         */
        Integer INT_STATUS_DEL = 1;
    
        /**
         * 正常
         */
        String STATUS_NORMAL = "0";
    
        /**
         * 正常
         */
        Integer INT_STATUS_NORMAL = 0;
    
        /**
         * 锁定
         */
        String STATUS_LOCK = "9";
    
        /**
         * 菜单
         */
        String MENU = "0";
    
        /**
         * 按钮
         */
        String BUTTON = "1";
    
        /**
         * 删除标记
         */
        String DEL_FLAG = "del_flag";
    
        /**
         * 是否删除标记(0否 1是)
         */
        String IS_DELETE = "is_delete";
    
        /**
         * 编码
         */
        String UTF8 = "UTF-8";
    
        /**
         * JSON 资源
         */
        String CONTENT_TYPE = "application/json; charset=utf-8";
    
        /**
         * 阿里大鱼
         */
        String ALIYUN_SMS = "aliyun_sms";
    
        /**
         * 路由信息Redis保存的key
         */
        String ROUTE_KEY = "_ROUTE_KEY";
    
        /**
         * 数组符号
         */
        String ARRAY_SYMBOL = "[]";
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110

    Response.java

    此文件为返回数据统一封装类,按需取用。

    /**
     * Copyright (c) 2022-2030 XXX All rights reserved.
     * <p>
     * 1414798079@qq.com
     * <p>
     * 版权所有,侵权必究!
     */
    
    package com.github.common.utils;
    
    import lombok.Data;
    
    /**
     * 返回参数封装类
     *
     * @author songfayuan
     */
    @Data
    public class Response {
        protected int code;
        protected String msg;
        protected Object data;
    
        private static final int SUCCESS_CODE = 200;
        private static final String SUCCESS_MSG = "success";
        private static final int ERROR_CODE = 500;
        private static final String ERROR_MSG = "服务器内部异常,请联系技术人员!";
    
        public static Response success() {
            Response resp = new Response();
            resp.code = (SUCCESS_CODE);
            resp.msg = (SUCCESS_MSG);
            return resp;
        }
    
        public static Response successResponse(String msg) {
            Response resp = new Response();
            resp.code = SUCCESS_CODE;
            resp.msg = msg;
            return resp;
        }
    
        public static Response error() {
            Response resp = new Response();
            resp.code = (ERROR_CODE);
            resp.msg = (ERROR_MSG);
            return resp;
        }
    
        public static Response errorResponse(String msg) {
            Response resp = new Response();
            resp.code = ERROR_CODE;
            resp.msg = msg;
            return resp;
        }
    
        public static Response response(int code, String msg) {
            Response resp = new Response();
            resp.code = (code);
            resp.msg = (msg);
            return resp;
        }
    
        public static Response response(int code, String msg, Object data) {
            Response resp = new Response();
            resp.code = (code);
            resp.msg = (msg);
            resp.data = data;
            return resp;
        }
    
        public static Response success(Object data) {
            Response resp = new Response();
            resp.code = (SUCCESS_CODE);
            resp.msg = (SUCCESS_MSG);
            resp.data = data;
            return resp;
        }
    
        public static Response error(Object data) {
            Response resp = new Response();
            resp.code = (ERROR_CODE);
            resp.msg = (ERROR_MSG);
            resp.data = data;
            return resp;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88

    代码生成

    以上配置完成以后,你就可以创建好MySQL数据库表,然后修改MybatisPlusGenerator类中的表名配置为你新建的表名,最后运行MybatisPlusGenerator类的main方法,生成带注释的代码了。

    在这里插入图片描述

    接下来就可以开始写业务逻辑了,THE END…

  • 相关阅读:
    Stable Diffuse 之 本地环境部署/安装包下载搭建过程简单记录
    PyTorch技术和深度学习——四、神经网络训练与优化
    KT6368A蓝牙芯片的天线注意事项_倒F型-蛇形_陶瓷天线的区别
    TCP/IP模型原理(理论)
    CVE-2022-39197(CobaltStrike XSS <=4.7)漏洞复现
    PostgreSQL VACUUM 之深入浅出 (一)
    dos2unix和unix2dos
    一、MySQL-Replication(主从复制)
    【QT开发(4)】Qt Creator编译器修改,应用程序二进制接口(ABI)的版本;API、ABI、系统调用是什么?版本的选择(ABI和CPU版本)
    Centos指令合集
  • 原文地址:https://blog.csdn.net/u011019141/article/details/125633987