Mybatiplus通用3.5.1版本及其以上的代码生成器工具类

Mybatiplus通用3.5.1版本及其以上的代码生成器工具类

package com.gton.util;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;

/**
 * @description: Mybatis-Plus3.5.1代码生成器
 * @author: GuoTong
 * @createTime: 2022-02-13 16:59
 * @since JDK 1.8 OR 11
 **/
@SuppressWarnings("unchecked")
public class AutoGeneratorTools {

    /**
     * Description:
     * 使用前:
     * 指定生成的模块名称:modelName
     * 指定生成业务子包名称:mkdirFiile
     *
     * @author: GuoTong
     * @date: 2022-10-22 22:03:01
     */
    private static String modelName = "/commodity/";
    // 按照业务划分不同多个子包
    private static String mkdirFiile = "user";

    private final String url = "jdbc:mysql://127.0.0.1:3306/study?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";

    // 高版本的DataSource不需要驱动 保留
    private final String driver = "com.mysql.jdbc.Driver";

    private final String username = "root";
    private final String password = "";


    public static void main(String[] args) {
        AutoGeneratorTools autoGeneratorTools = new AutoGeneratorTools();
        String userDir = System.getProperty("user.dir");
        String path = "src/main/java";
        String parentPath = "com.gton." + mkdirFiile;
        String mapperXmlPath = "/com/gton/" + mkdirFiile + "/mapper/xml";
        List<String> tables = new ArrayList<>();
        tables.add("product_buying");
        autoGeneratorTools.getDataSourceByFile();
        // 代码自动生成
        autoCreateCode(autoGeneratorTools, userDir, path, parentPath, mapperXmlPath, tables);

    }

    private Properties getDataSourceByFile() {
        FileInputStream dataSource = null;
        InputStream dataSourceStream = null;

        try {
            String property = System.getProperty("user.dir");
            dataSource = new FileInputStream(property + "/common/src/main/resources/application.properties");
            dataSourceStream = new BufferedInputStream(dataSource);
            Properties ps = new Properties();
            ps.load(dataSourceStream);
            return ps;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (dataSourceStream != null) {
                try {
                    dataSourceStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            if (dataSource != null) {
                try {
                    dataSource.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return new Properties();
    }

    private static void autoCreateCode(AutoGeneratorTools autoGeneratorTools, String userDir, String path, String parentPath, String mapperXmlPath, List<String> tables) {
        FastAutoGenerator.create(autoGeneratorTools.getDataConfigBuilder()).
                globalConfig(builder ->
                        builder.author("GuoTong").
                                commentDate("yyyy-MM-dd").
                                enableSwagger().
                                dateType(DateType.TIME_PACK).
                                disableOpenDir().
                                outputDir(userDir + modelName + path)).
                packageConfig(builder ->
                        builder.parent(parentPath).
                                moduleName("").
                                entity("entity").
                                service("service").
                                serviceImpl("service.impl").
                                mapper("mapper").
                                xml("mapper.xml").
                                controller("controller").
                                pathInfo(Collections.singletonMap(OutputFile.mapperXml, userDir + modelName + path + mapperXmlPath))).
                strategyConfig(builder ->
                        builder.addInclude(tables).
                                entityBuilder().
                                idType(IdType.ASSIGN_ID).
                                enableLombok().
                                enableTableFieldAnnotation().
                                enableChainModel().
                                logicDeleteColumnName("is_del").
                                logicDeletePropertyName("isDel").
                                addTableFills(new Column("create_time", FieldFill.INSERT)).
                                addTableFills(new Property("createTime", FieldFill.INSERT)).
                                addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE)).
                                addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE)).
                                controllerBuilder().
                                formatFileName("%sController").
                                enableRestStyle().
                                serviceBuilder().
                                formatServiceFileName("%sService").
                                formatServiceImplFileName("%sServiceImpl").
                                mapperBuilder().
                                enableBaseColumnList().
                                enableMapperAnnotation().
                                enableBaseResultMap().
                                formatMapperFileName("%sMapper").
                                formatXmlFileName("%sMapper")).
                templateEngine(new VelocityTemplateEngine()).execute();
    }


    private DataSourceConfig.Builder getDataConfigBuilder() {
        Properties dataSourceByFile = getDataSourceByFile();
        Object dbURl = dataSourceByFile.getOrDefault("spring.datasource.url", url);
        Object dbUsername = dataSourceByFile.getOrDefault("spring.datasource.username", username);
        Object dbPassword = dataSourceByFile.getOrDefault("spring.datasource.password", password);
        return new DataSourceConfig.Builder(dbURl.toString(), dbUsername.toString(), dbPassword.toString()).
                dbQuery(new MySqlQuery()).
                keyWordsHandler(new MySqlKeyWordsHandler()).
                schema("Mybatis-Plus").
                typeConvert(new MySqlTypeConvert());
    }
}

可以读取classpath下的数据源配置:application.properties


#数据源
spring.datasource.url=jdbc:mysql://130.33.238.27:3306/cloud_market?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis-Plus 3.5.1 代码生成器MyBatis-Plus 框架提供的一款代码生成工具,可以帮助开发者快速生成 MyBatis-Plus 的 Mapper 接口及其 XML 映射文件、Service 接口、ServiceImpl 实现类、Entity 实体类等代码。 使用 MyBatis-Plus 代码生成器,可以减轻开发者的工作负担,提高开发效率,避免手写重复性的代码。以下是使用 MyBatis-Plus 代码生成器的步骤: 1. 引入 MyBatis-Plus 依赖 在项目的 pom.xml 文件中,添加 MyBatis-Plus 的依赖: ``` <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.5.1</version> </dependency> ``` 2. 配置代码生成器 在项目的配置文件(如 application.yml 或 application.properties)中,添加代码生成器的配置信息,包括数据库连接信息、生成代码的包路径、作者等信息。 ``` mybatis-plus: global-config: db-config: # 数据库配置 url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 driver-name: com.mysql.cj.jdbc.Driver generator: # 生成代码的包路径 package-name: com.example.mybatisplusdemo # 生成代码的作者 author: example # 开启生成器 enable: true # 开启实体类 Lombok 注解 enable-lombok: true # 开启 Swagger2 注解 enable-swagger: true # 开启 ActiveRecord 模式(生成 ActiveRecord 的实体类和接口) enable-activerecord: true ``` 3. 运行代码生成器 在项目的启动类中,添加以下代码,启动代码生成器: ``` @SpringBootApplication public class MybatisPlusDemoApplication { public static void main(String[] args) { SpringApplication.run(MybatisPlusDemoApplication.class, args); // 启动代码生成器 MybatisPlusGenerator.execute(); } } ``` 4. 查看生成的代码 代码生成器会根据配置信息,自动生成 Mapper 接口及其 XML 映射文件、Service 接口、ServiceImpl 实现类、Entity 实体类等代码,生成的代码位于指定的包路径下。开发者可以在生成的代码的基础上,进行业务代码的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值