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;
    }

}

生成结果


相关推荐
HeyZoeHey2 天前
Mybatis执行sql流程(一)
java·sql·mybatis
青川入梦2 天前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis
33255_40857_280592 天前
掌握分页艺术:MyBatis与MyBatis-Plus实战指南(10年Java亲授)
java·mybatis
勿在浮沙筑高台2 天前
无法获取实体类com.example.springdemo2.entity.po.UserPO对应的表名!
java·spring boot·mybatis
柯南二号3 天前
【Java后端】MyBatis-Plus 原理解析
java·开发语言·mybatis
Easocen3 天前
Mybatis学习笔记(五)
笔记·学习·mybatis
qq_三哥啊3 天前
【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)
spring·intellij-idea·mybatis
柯南二号3 天前
【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略
java·spring boot·mybatis
记忆不曾留4 天前
Mybatis 源码解读-SqlSession 会话源码和Executor SQL操作执行器源码
mybatis·二级缓存·sqlsession会话·executor执行器·一级缓存localcache
昵称为空C5 天前
SpringBoot 实现DataSource接口实现多租户数据源切换方案
后端·mybatis