MyBatis-Flex代码生成

引入依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
</dependency>

<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-spring-boot-starter</artifactId>
    <version>1.11.0</version>
</dependency>

<dependency>
    <groupId>com.mybatis-flex</groupId>
    <artifactId>mybatis-flex-codegen</artifactId>
    <version>1.11.0</version>
</dependency>

代码实现

java 复制代码
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.ColumnConfig;
import com.mybatisflex.codegen.config.GlobalConfig;
import com.qiangesoft.mybatisflex.base.BaseEntity;
import com.zaxxer.hikari.HikariDataSource;

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

    public static void main(String[] args) {
        // 配置数据源
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/db_mybatisflex?useInformationSchema=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8");
        dataSource.setUsername("root");
        dataSource.setPassword("root");

        // 创建配置内容,两种风格都可以。
        GlobalConfig globalConfig = createGlobalConfigUseStyle2();

        // 通过 datasource 和 globalConfig 创建代码生成器
        Generator generator = new Generator(dataSource, globalConfig);

        // 生成代码
        generator.generate();
    }

    /**
     * 常规风格
     */
    public static GlobalConfig createGlobalConfigUseStyle1() {
        // 创建配置内容
        GlobalConfig globalConfig = new GlobalConfig();

        // 设置路径及根包
        globalConfig.setSourceDir("D:/work/code/boot-business/boot-business-mybatisflex/src/main/java");
        globalConfig.setBasePackage("com.qiangesoft.mybatisflex");
        globalConfig.setMapperXmlPath("D:/work/code/boot-business/boot-business-mybatisflex/src/main/resources/mapper");

        // 设置生成策略
//        globalConfig.setTablePrefix("tb_");
        globalConfig.setGenerateTable("sys_user", "sys_dept");
        globalConfig.setUnGenerateTable("tb_test");
        globalConfig.setLogicDeleteColumn("deleted");
        globalConfig.setVersionColumn("version");

        // 设置 javadoc
        globalConfig.setAuthor("qiangesoft");
        globalConfig.setSince("1.0.0");

        // 设置生成 entity
        globalConfig.setEntityGenerateEnable(true);
        globalConfig.setEntityWithLombok(true);
//        globalConfig.setEntitySuperClass(BaseEntity.class);
        globalConfig.setEntityJdkVersion(11);

        // 设置生成 mapper
        globalConfig.setMapperGenerateEnable(true);
        globalConfig.setMapperAnnotation(true);

        // 设置生成 mapper.xml
        globalConfig.setMapperXmlGenerateEnable(true);

        // 设置生成 service
        globalConfig.setServiceGenerateEnable(true);

        // 设置生成 serviceImpl
        globalConfig.setServiceImplGenerateEnable(true);

        // 设置生成 controller
        globalConfig.setControllerGenerateEnable(true);
        globalConfig.setControllerRestStyle(true);
//        globalConfig.setControllerRequestMappingPrefix("sys");

        // 单独配置某个列
//        ColumnConfig columnConfig1 = new ColumnConfig();
//        columnConfig1.setColumnName("create_time");
//        columnConfig1.setOnInsertValue("now()");
//
//        ColumnConfig columnConfig2 = new ColumnConfig();
//        columnConfig2.setColumnName("update_time");
//        columnConfig2.setOnUpdateValue("now()");
//
//        globalConfig.setColumnConfig(columnConfig1);
//        globalConfig.setColumnConfig(columnConfig2);

        // 指定表
        // globalConfig.setColumnConfig("tb_account", columnConfig);

        return globalConfig;
    }

    /**
     * 链式风格
     */
    public static GlobalConfig createGlobalConfigUseStyle2() {
        // 创建配置内容
        GlobalConfig globalConfig = new GlobalConfig();

        // 设置路径及根包
        globalConfig.getPackageConfig()
                .setSourceDir("D:/work/code/boot-business/boot-business-mybatisflex/src/main/java")
                .setBasePackage("com.qiangesoft.mybatisflex")
                .setMapperXmlPath("D:/work/code/boot-business/boot-business-mybatisflex/src/main/resources/mapper");

        // 设置生成策略
        globalConfig.getStrategyConfig()
//                .setTablePrefix("sys_")
                .setGenerateTable("sys_user", "sys_dept")
                .setUnGenerateTable("tb_test")
                .setIgnoreColumns("test")
                .setLogicDeleteColumn("deleted")
                .setVersionColumn("version");

        // 设置 javadoc
        globalConfig.getJavadocConfig()
                .setAuthor("admin")
                .setSince("1.0.0");

        // 设置生成 entity
        globalConfig.enableEntity()
                .setWithLombok(true)
                .setAlwaysGenColumnAnnotation(true)
		//        .setSuperClass(BaseEntity.class)
                .setJdkVersion(11);

        // 设置生成 mapper
        globalConfig.enableMapper()
                .setMapperAnnotation(true);

        // 配置生成 mapper.xml
        globalConfig.enableMapperXml();

        // 设置生成 service
        globalConfig.enableService();

        // 设置生成 serviceImpl
        globalConfig.enableServiceImpl();

        // 设置生成 controller
        globalConfig.enableController()
                .setRestStyle(true)
                .setRequestMappingPrefix("sys");

        // 单独配置某个列
//        ColumnConfig columnConfig1 = new ColumnConfig();
//        columnConfig1.setColumnName("create_time");
//        columnConfig1.setOnInsertValue("now()");
//
//        ColumnConfig columnConfig2 = new ColumnConfig();
//        columnConfig2.setColumnName("update_time");
//        columnConfig2.setOnUpdateValue("now()");
//
//        globalConfig.getStrategyConfig()
//                .setColumnConfig(columnConfig1)
//                .setColumnConfig(columnConfig2);

        return globalConfig;
    }

}

生成结果


相关推荐
躲在云朵里`2 小时前
Spring Scheduler定时任务实战:从零掌握任务调度
java·数据库·mybatis
Java小白程序员1 天前
MyBatis基础到高级实践:全方位指南(中)
数据库·mybatis
山楂树下懒猴子1 天前
ChatAI项目-ChatGPT-SDK组件工程
人工智能·chatgpt·junit·https·log4j·intellij-idea·mybatis
Mr_hwt_1231 天前
基于mybatis-plus动态数据源实现mysql集群读写分离和从库负载均衡教程(详细案例)
数据库·spring boot·mysql·mybatis·mysql集群
Z_z在努力2 天前
【杂类】Spring 自动装配原理
java·spring·mybatis
little_xianzhong2 天前
关于对逾期提醒的定时任务~改进完善
java·数据库·spring boot·spring·mybatis
MadPrinter2 天前
SpringBoot学习日记 Day11:博客系统核心功能深度开发
java·spring boot·后端·学习·spring·mybatis
奔跑吧邓邓子2 天前
【Java实战㉟】Spring Boot与MyBatis:数据库交互的进阶之旅
java·spring boot·实战·mybatis·数据库交互
lunzi_fly2 天前
【源码解读之 Mybatis】【基础篇】-- 第1篇:MyBatis 整体架构设计
java·mybatis
摸鱼仙人~2 天前
深入理解 MyBatis-Plus 的 `BaseMapper`
java·开发语言·mybatis