优秀的编程知识分享平台

网站首页 > 技术文章 正文

MyBatisFlex自动生成代码(mybatis plus自动生成表)

nanyue 2024-08-04 17:02:54 技术文章 10 ℃

#精品长文创作季#

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();
    }
}
最近发表
标签列表