MyBatis-Plus AutoGenerator自动生成代码

AutoGenerator代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

1.准备数据

CREATE TABLE `user` (
  `id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'id\r\n身份标识号',
  `real_name` varchar(50) DEFAULT NULL COMMENT '真实姓名',
  `gender` varchar(6) DEFAULT NULL COMMENT '性别',
  `age` varchar(3) DEFAULT NULL COMMENT '年龄',
  `email` varchar(25) DEFAULT NULL COMMENT '邮箱',
  `address` varchar(255) DEFAULT NULL COMMENT '住址',
  `nick_name` varchar(50) DEFAULT NULL COMMENT '昵称',
  `password` varchar(255) DEFAULT NULL COMMENT '密码',
  `account` varchar(50) DEFAULT NULL COMMENT '账号',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2.依赖

MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖

        <!-- mybatisplus自动生成orm代码三件套 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <!--Freemarker模板引擎-->
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>

<!--MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl三种模板,但springboot1.4版本以上不再支持velocity-->
<!--        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.1</version>
        </dependency>-->
<!--        <dependency>
            <groupId>com.ibeetl</groupId>
            <artifactId>beetl-framework-starter</artifactId>
            <version>1.2.10.RELEASE</version>
        </dependency>-->

3.配置和执行AutoGenerator 代码生成器

@Slf4j
public class MysqlGenerator {
    public static void main(String[] args) {
        //全局策略配置
        GlobalConfig config = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        config.setActiveRecord(true)
                //作者注释
                .setAuthor("LeeJack")
                //输出路径
                .setOutputDir(projectPath + "/mybatis-plus-autogenerator/src/main/java")
                //覆盖已有文件,默认false
                .setFileOverride(true)
                //是否打开输出目录窗口。默认true
                .setOpen(false)
                //是否在xml中添加二级缓存配置。默认false
                //.setEnableCache(true)
                //开启kotlin模式,默认false
                //.setKotlin(false)
                //开启swagger2模式
                .setSwagger2(true)
                //开启ActiveRecord模式
                .setActiveRecord(true)
                //mapper添加restMap
                .setBaseResultMap(true)
                //mapper添加Base_Column_List
                .setBaseColumnList(true)
                //时间类型对应策略,默认time_pack
                //.setDateType(DateType.TIME_PACK)
                .setMapperName("%sDao")
                .setServiceName("%sService")
                .setServiceImplName("%sServiceImpl");
                //.setIdType(IdType.ASSIGN_ID)


        //数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setDriverName("com.mysql.cj.jdbc.Driver")
                .setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai")
                .setUsername("root")
                .setPassword("root");
        //数据库信息查询类,默认由dbType类型决定,实现IDbQuery接口可自定义数据库查询sql
        //.setDbQuery()
        //不知道干嘛的,官网写的是public,我改成其他都没有发现变化
        //.setSchemaName("private")
        //内置转换类型,默认由dbType类型决定。可实现或重写实现了 IColumnType 接口的类,自定义转换为自己需要的 java 类型
        //.setTypeConvert(new MySqlTypeConvert())

        //数据库表配置,通过该配置,可指定需要生成哪些表或者排除哪些表
        StrategyConfig strategyConfig = new StrategyConfig();
        //是否大写命名
        strategyConfig.setCapitalMode(true)
                //是否跳过视图
                .setSkipView(true)
                //数据库表映射到实体的命名策略
                .setNaming(NamingStrategy.underline_to_camel)
                //数据库表字段映射到实体的命名策略,未指定按照naming执行
                //.setColumnNaming(NamingStrategy.no_change)
                //生成表
                .setInclude("operate_log", "user")
                .setEntityBuilderModel(true)
                .setEntityLombokModel(true)
                .setRestControllerStyle(true)
                .setEntityTableFieldAnnotationEnable(true);

        //包名配置
        PackageConfig packageConfig = new PackageConfig();
        //父包名
        packageConfig.setParent("com.ljj")
                .setMapper("dao")
                .setService("service")
                .setController("controller")
                .setEntity("entity")
                .setXml("mapper");

        //自定义模板配置
        //TemplateConfig templateConfig = new TemplateConfig();
        //templateConfig.setEntity("/templates/entity.java");

        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setGlobalConfig(config)
                .setStrategy(strategyConfig)
                .setDataSource(dataSourceConfig)
                .setTemplateEngine(new FreemarkerTemplateEngine())
                .setPackageInfo(packageConfig);

        autoGenerator.execute();
        log.info("=============代码生成成功================");
    }
}
发布了29 篇原创文章 · 获赞 0 · 访问量 376

猜你喜欢

转载自blog.csdn.net/qq_43399077/article/details/104061725