MyBatisFlex是一个基于MyBatis的代码生成工具,可以帮助开发者快速生成实体类、Mapper接口和Service类。它可以根据数据库表结构自动生成实体类,并且自动生成对应的Mapper接口和Service类,大大减少了开发人员的工作量。
生成的实体类包含了数据库表的字段信息,并且提供了对应的getter和setter方法。Mapper接口包含了对数据库表的增删改查操作的方法,通过MyBatis的注解来映射SQL语句。Service类则封装了Mapper接口的调用,提供了业务逻辑的处理。
使用MyBatisFlex可以快速生成符合规范的代码,提高开发效率,减少重复劳动。同时,生成的代码结构清晰,易于维护和扩展。MyBatisFlex是一个强大的代码生成工具,可以帮助开发者快速构建基于MyBatis的应用程序。
一、导入相关的依赖
<dependencies>
<!--用于自动生成相应的类-->
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-codegen</artifactId>
<version>${mybatis-flex-codegen.version}</version>
</dependency>
<!--引入Swagger2依赖-->
<!--<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox-swagger2.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox-swagger2.version}</version>
</dependency>-->
<!-- 引入Swagger3依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${springfox-boot-starter}</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>${swagger-ui.version}</version>
</dependency>
<!-- 数据库驱动和连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${alibaba.version}</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector.version}</version>
</dependency>
<!--oracle驱动-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${ojdbc6.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!--工具包-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>ru.yandex.clickhouse</groupId>-->
<!-- <artifactId>clickhouse-jdbc</artifactId>-->
<!-- <version>${click-house.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.2-patch8</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<mybatis-flex-codegen.version>1.7.2</mybatis-flex-codegen.version>
<!--<springfox-swagger2.version>2.9.2</springfox-swagger2.version>-->
<springfox-boot-starter>3.0.0</springfox-boot-starter>
<alibaba.version>1.2.17</alibaba.version>
<ojdbc6.version>11.2.0.3</ojdbc6.version>
<mysql-connector.version>5.1.48</mysql-connector.version>
<hutool.version>4.5.18</hutool.version>
<swagger-ui.version>1.9.6</swagger-ui.version>
<click-house.version>0.3.2</click-house.version>
</properties>
二、显示自动生成实体类的代码
import com.alibaba.druid.pool.DruidDataSource;
import com.mybatisflex.codegen.config.GlobalConfig;
/**
* 自动生成实体,mapper,service的配置
*/
public class DataSourceGlobalConfig {
public static DruidDataSource getDruid(String userName,String passWord,String url){
//配置数据源
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setUsername(userName);
dataSource.setPassword(passWord);
return dataSource;
}
public static GlobalConfig createGlobalConfigUseStyle1(String sourceDir,String basePackage,
String generateTable[],String dataDir,
String resources) {
//创建配置内容
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setSourceDir(sourceDir);
//设置根包
globalConfig.setBasePackage(basePackage);
//设置生成哪些表
globalConfig.setGenerateTable(generateTable);
String basePath=globalConfig.getBasePackage();
globalConfig.setEntityOverwriteEnable(true);
//设置生成 entity 并启用 Lombok
globalConfig.setEntityPackage(basePath+".entity."+dataDir);
globalConfig.setEntityGenerateEnable(true);
globalConfig.setEntityWithLombok(true);
//设置生成 mapper
globalConfig.setMapperPackage(basePath+".mapper."+dataDir);
globalConfig.setMapperGenerateEnable(true);
//设置生成 service
globalConfig.setServiceGenerateEnable(true);
//设置生成impl
globalConfig.setServiceImplPackage(basePath+".service.impl."+dataDir);
globalConfig.setServiceImplGenerateEnable(true);
globalConfig.setMapperXmlPath(resources + "/src/main/resources/mapper/"+dataDir);
//设置生成 xml
globalConfig.setMapperXmlGenerateEnable(true);
//设置数据源
globalConfig.setEntityDataSource(dataDir);
globalConfig.getJavadocConfig()
.setAuthor("test")
.setSince("1.0.1");
return globalConfig;
}
}
三、mysql调用自动生成的工具类生成相关的实体类,mapper,service
import com.alibaba.druid.pool.DruidDataSource;
import com.common.project.config.DataSourceGlobalConfig;
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.GlobalConfig;
public static void main(String[] args) {
//配置数据源
DruidDataSource dataSource = DataSourceGlobalConfig.getDruid("root", "root", "jdbc:mysql://127.0.0.1:3309/test");
String projectPath = "E:\test\xxx-controller";
String basePackage = "com.xxx.project";
String tableArr[] = new String[]{"auto_test"};
//创建配置内容
GlobalConfig globalConfig = DataSourceGlobalConfig
.createGlobalConfigUseStyle1(projectPath + "\\src\\main\\java",
basePackage, tableArr, "db1",
projectPath);
//通过 datasource 和 globalConfig 创建代码生成器
Generator generator = new Generator(dataSource, globalConfig);
//生成代码
generator.generate();
}
四、oracle调用自动生成的工具类生成相关的实体类,mapper,service
import com.alibaba.druid.pool.DruidDataSource;
import com.common.project.config.DataSourceGlobalConfig;
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.GlobalConfig;
public class OracleGeneratorUtil {
public static void main(String[] args) {
DruidDataSource dataSource= DataSourceGlobalConfig.getDruid("dbu","tiger","jdbc:oracle:thin:@127.0.0.1:1521:orcl");
String projectPath = "E:\test\xxx-controller";
String basePackage = "com.xxx.project";
String tableArr[] = new String[]{"auto_test"};
//创建配置内容
GlobalConfig globalConfig = DataSourceGlobalConfig
.createGlobalConfigUseStyle1(projectPath + "\\src\\main\\java",
basePackage, tableArr, "db1",
projectPath);
//通过 datasource 和 globalConfig 创建代码生成器
Generator generator = new Generator(dataSource, globalConfig);
//生成代码
generator.generate();
}
}