【SpringBoots增删改查代码一键生成】使用mybatis-plus-generator实现 最新版本

需要两个额外依赖 自己找最新的都没事 不确定最新版本适配下面的模板代码

https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator

 <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.7</version>
</dependency>

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>

生成工具类 最新版本适配

import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.Collections;

/**
 * 代码生成工具类
 *
 */
public class MybatisPlusGeneratorUtil {

    /**
     * 数据库链接地址
     */
    private static final String URL = "jdbc:mysql://数据库ip:3306/库名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=false&serverTimezone=UTC";

    /**
     * 用户名
     */
    private static final String USERNAME = "数据库账号";

    /**
     * 密码
     */
    private static final String PASSWORD = "数据库密码";

    /**
     * 作者
     */
    private static final String AUTHOR = "作者名字";

    /**
     * 表名的前缀,从表生成代码时会去掉前缀
     */
    private static final String TABLE_PREFIX = "";

    /**
     * 需要生成的表名,必填 逗号隔开
     */
    private static final String[] TABLES = {
            ""
    };

    public static void main(String[] args) {
        if (ArrayUtil.hasEmpty((Object) TABLES)) {
            System.out.println("请输入需要生成的表名!");
            return;
        }

        String projectPath = System.getProperty("user.dir") + "/模块文件夹名称";

        //全局配置
        GlobalConfig config = new GlobalConfig.Builder()
                .author(AUTHOR)                                      //作者
                .outputDir(projectPath + "/src/main/java")          //生成文件输出路径(写到java目录)
                //.enableSwagger()                                  //开启swagger
                .commentDate("yyyy-MM-dd HH:mm:ss")                 //注释日期格式
                .dateType(DateType.TIME_PACK)                       //设置时间对应类型
                .disableOpenDir()                                   //生成后不要打开目录
                .build();

        //包名配置
        PackageConfig packageConfig = new PackageConfig.Builder()
                .parent("")                      //父包名
                .moduleName("")                  //模块名
                .controller("controller")       //controller包名
                .service("service")           //service接口包名
                .serviceImpl("service.impl")         //service实现类包名
                .entity("domain.entity")               //实体类包名
                .mapper("mapper")               //mapper包名
                .xml("xml")                  //mapper对应的xml包名
                .pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + "/src/main/resources/mybatis.mapper"))                  //mapper对应的xml路径
                .build();

        //策略配置
        StrategyConfig strategyConfig = new StrategyConfig.Builder()
                .addTablePrefix(TABLE_PREFIX)                       //需要抵消的表前缀
                .addInclude(TABLES)                                 //设置生成需要映射的表名
                //.enableCapitalMode()                              //策略开启⼤写命名

                .serviceBuilder()                                   //构建Service层
//                .enableFileOverride()                               //覆盖文件(需谨慎使用)
                .formatServiceFileName("%sService")
                .formatServiceImplFileName("%sServiceImpl")             //业务层接口实现类命名
//                .superServiceImplClass(BaseService.class)         //service公共父类

                .entityBuilder()                                    //构建实体类
                .enableActiveRecord()                               //开启AR
                .enableFileOverride()                               //覆盖文件(需谨慎使用)
                .formatFileName("%s")
//                .superClass(BaseEntity.class)                       //entity公共父类
//                .addSuperEntityColumns("id","updateTime","createTime") // 公共字段
                .columnNaming(NamingStrategy.underline_to_camel)    //字段名驼峰命名
                .naming(NamingStrategy.underline_to_camel)          //表名驼峰命名
                .enableLombok()                                     //添加lombock的getter、setter注解
                .enableChainModel()                               //启动链式写法@Accessors(chain = true)
                //.enableColumnConstant()                           //启动属性转常量功能@FieldNameConstants
                //.logicDeleteColumnName("deleted")                 //逻辑删除字段,标记@TableLogic
 //               .enableTableFieldAnnotation()                       //启动字段注解
//                .addTableFills(new Column("create_time", FieldFill.INSERT), new Column("update_time", FieldFill.INSERT_UPDATE))   //属性值填充策略

                .controllerBuilder()                                //构建Controller类
                .enableFileOverride()                               //覆盖文件(需谨慎使用)
                .enableHyphenStyle()                                //映射路径使用连字符格式,而不是驼峰
                .formatFileName("")                                 //Controller类命名 不生成
//                .superClass(BaseController.class)                   //Controller 类继承 BaseController
                .enableRestStyle()                                  //标记@RestController注解

                .mapperBuilder()                                    //构建mapper接口类
                .enableFileOverride()                               //覆盖文件(需谨慎使用)
                .enableBaseResultMap()                              //生成基本的resultMap
                .formatMapperFileName("%sMapper")                   //Mapper接口类明名
                .superClass(BaseMapper.class)                       //Mapper接口类集成 BaseMapper
                //.enableMapperAnnotation()                         //标记@Mapper注解
                .formatXmlFileName("%sMapper")                      //Mapper.xml命名
                .enableBaseColumnList()                             //生成基本的SQL片段

                .build();

        //数据源配置
        DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(URL, USERNAME, PASSWORD);
        //数据库类型转换器
        dataSourceConfigBuilder.typeConvert(new MySqlTypeConvert() {
            /*@Override
            public IColumnType processTypeConvert(GlobalConfig globalConfig, String tableField) {
                if (tableField.toLowerCase().contains("date") || tableField.toLowerCase().contains("timestamp") || tableField.toLowerCase().contains("datetime")) {
                    return DbColumnType.STRING;
                }
                return super.processTypeConvert(globalConfig, tableField);
            }*/
        });

        //创建代码生成器对象,加载配置
        AutoGenerator autoGenerator = new AutoGenerator(dataSourceConfigBuilder.build());
        autoGenerator.global(config);
        autoGenerator.packageInfo(packageConfig);
        autoGenerator.strategy(strategyConfig);

        //执行
        autoGenerator.execute();
        System.out.println("========================================  相关代码生成完毕  =====================================");
    }
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值