<!-- 数据源配置 - start -->
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-spring-boot-starter</artifactId>
<version>1.7.5</version>
<!-- ## SpringBoot 3.2 项目,启动报错 Invalid value type for attribute 'factoryBeanObjectType': java.lang.String -->
<!-- 这个是 `mybatis-spring` 依赖版本过低造成的,需要将内置的低版本 `mybatis-spring` 换为最新版。 -->
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- 添加已适配 springboot 3.2 的 mybatis-spring 依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.3</version>
</dependency>
<!-- 数据源配置 - end -->
<!-- MyBatis-Flex 代码生成器 -->
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-codegen</artifactId>
<version>1.7.5</version>
</dependency>
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.ColumnConfig;
import com.mybatisflex.codegen.config.GlobalConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
/**
* @Author:chanchifeng
* @Date:2023-11-27 10:03
* @Description:
*/
@SpringBootTest
public class MybatisFlexGenerator {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
/**
* 参考文档:https://mybatis-flex.com/zh/others/codegen.html
*/
@Test
void test() {
// 配置数据源
HikariDataSource dataSource = new HikariDataSource();
// dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/your-database?characterEncoding=utf-8");
// dataSource.setUsername("root");
// dataSource.setPassword("******");
dataSource.setJdbcUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
// 创建配置内容,两种风格都可以。
GlobalConfig globalConfig = createGlobalConfigUseStyle1();
// GlobalConfig globalConfig = createGlobalConfigUseStyle2();
// 通过 datasource 和 globalConfig 创建代码生成器
Generator generator = new Generator(dataSource, globalConfig);
// 生成代码
generator.generate();
}
public static GlobalConfig createGlobalConfigUseStyle1() {
// 创建配置内容
GlobalConfig globalConfig = new GlobalConfig();
// 设置根包
globalConfig.setBasePackage("com.chanchifeng.le16server.modules.sys");
// 设置表前缀和只生成哪些表
// globalConfig.setTablePrefix("tb_");
globalConfig.setGenerateTable("sys_menu", "sys_user");
// 设置生成 entity 并启用 Lombok
globalConfig.setEntityGenerateEnable(true);
// globalConfig.setEntityWithLombok(true);
globalConfig.setEntityWithLombok(false);
// 设置生成 mapper
globalConfig.setMapperGenerateEnable(true);
// 可以单独配置某个列
// ColumnConfig columnConfig = new ColumnConfig();
// columnConfig.setColumnName("tenant_id");
// columnConfig.setLarge(true);
// columnConfig.setVersion(true);
// globalConfig.setColumnConfig("tb_account", columnConfig);
// 生成mapper.xml
globalConfig.setMapperXmlGenerateEnable(true);
globalConfig.setMapperXmlPath(globalConfig.getMapperXmlPath() + "/sys");
// 生成controller,service,serviceImpl
globalConfig.setControllerGenerateEnable(true);
globalConfig.setServiceGenerateEnable(true);
globalConfig.setServiceImplGenerateEnable(true);
return globalConfig;
}
public static GlobalConfig createGlobalConfigUseStyle2() {
// 创建配置内容
GlobalConfig globalConfig = new GlobalConfig();
// 设置根包
globalConfig.getPackageConfig()
.setBasePackage("com.test");
// 设置表前缀和只生成哪些表,setGenerateTable 未配置时,生成所有表
globalConfig.getStrategyConfig()
.setTablePrefix("tb_")
.setGenerateTable("tb_account", "tb_account_session");
// 设置生成 entity 并启用 Lombok
globalConfig.enableEntity()
.setWithLombok(true);
// 设置生成 mapper
globalConfig.enableMapper();
// 可以单独配置某个列
ColumnConfig columnConfig = new ColumnConfig();
columnConfig.setColumnName("tenant_id");
columnConfig.setLarge(true);
columnConfig.setVersion(true);
globalConfig.getStrategyConfig()
.setColumnConfig("tb_account", columnConfig);
return globalConfig;
}
}