MyBatisPlus代码生成

基础依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.giser.mp</groupId>
    <artifactId>giser-java-mybatis-plus</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>giser-java-mybatis-plus</name>
    <description>giser-java-mybatis-plus</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- mybatis-plus start -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.4.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-core -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
            <version>3.5.4.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-extension -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.5.4.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.4.1</version>
        </dependency>

        <!-- mybatis-plus end -->

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.6.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-aop</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>3.1.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-freemarker -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
            <version>3.1.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>3.1.0</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>gis-mp</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.4</version>
                <configuration>
                    <mainClass>com.giser.mp.GiserJavaMybatisPlusApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

代码生成-Version1.0

这里只是基础版,可以进行更多的配置,脱离低级简单的工作内容。

package com.giser.mp.generator;

import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Scanner;

public class GeneratorCode {

    public static void main(String[] args) {
        /**
         * 数据源配置
         */
        String url = "jdbc:mysql://localhost:3306/db_mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT%2B8";
        String username = "root";
        String password = "root";
        DataSourceConfig dataSourceConfig =
                new DataSourceConfig
                        .Builder(url, username, password)
                        .typeConvert(new MySqlTypeConvert())
                        .build();

        /**
         * 代码生成器
         */
        AutoGenerator mpg = new AutoGenerator(dataSourceConfig);


        /**
         * 全局配置
         */
        String projectPath = System.getProperty("user.dir");
        GlobalConfig globalConfig =
                new GlobalConfig
                        .Builder()
                        .outputDir(projectPath + "/giser-java-mybatis-plus/src/test/java/com/giser/mp/common/")
                        .author("your name")
                        .enableSwagger()
                        .dateType(DateType.ONLY_DATE)
                        .disableOpenDir()
//        		.fileOverride()
                        .build();
        mpg.global(globalConfig);


        /**
         * 包配置
         */
        PackageConfig pc =
                new PackageConfig
                        .Builder()
                        .moduleName(scanner("模块名"))
                        .build();
        mpg.packageInfo(pc);

        /**
         * 配置模板
         */
        TemplateConfig templateConfig =
                new TemplateConfig
                        .Builder()
                        .xml(null)
                        .build();
        mpg.template(templateConfig);

        /**
         * 策略配置
         */
        StrategyConfig strategy =
                new StrategyConfig.Builder()
                        .addInclude(scanner("表名,多个逗号分割").split(","))
                        .addTablePrefix("t_")
                        .enableCapitalMode()
                        .build();

        // 控制器配置
        strategy.controllerBuilder()
                .enableFileOverride()
                .enableRestStyle()
                .enableHyphenStyle();

        // 实体配置构建:设置自定义继承的Entity类全称,带包名
        strategy.entityBuilder()
                .enableFileOverride()
                .enableLombok()
//                .superClass("com.gis.business.pojo.entity.BaseEntity")
                .build();
        //设置命名格式
//        strategy.setNaming(NamingStrategy.underline_to_camel);
//        strategy.setColumnNaming(NamingStrategy.underline_to_camel);

        strategy.serviceBuilder()
                .enableFileOverride()
                .build();

        strategy.mapperBuilder()
                .enableFileOverride()
                .mapperAnnotation(org.apache.ibatis.annotations.Mapper.class)
                .build();

        mpg.strategy(strategy);

        FreemarkerTemplateEngine freemarkerTemplateEngine = new FreemarkerTemplateEngine();
        mpg.execute(freemarkerTemplateEngine);
    }

    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help.toString());
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotBlank(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确" + tip + "!");
    }

}

代码生成-Version2.0

package com.giser.mp.generator;

import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.giser.mp.common.BaseEntity;
import org.apache.commons.lang3.StringUtils;

import java.sql.Types;
import java.util.Collections;
import java.util.Scanner;

/**
 * @description 新的代码生成器
        适用版本:mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容!
 *
 * @author giserDev
 * @date 2023-11-23 19:11:54
 */
public class GeneratorCodeNew {

    public static void main(String[] args) {
        fastGenMode();
    }

    private static void fastGenMode() {
        /**
         * 数据源配置
         */
        String url = "jdbc:mysql://localhost:3306/db_mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT%2B8";
        String username = "root";
        String password = "root";

        String projectPath = System.getProperty("user.dir");

        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author("baomidou") // 设置作者
                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir(projectPath + "/giser-java-mybatis-plus/src/test/java/com/giser/mp/common/"); // 指定输出目录
                })
                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;
                    if (typeCode == Types.SMALLINT) {
                        // 自定义类型转换
                        return DbColumnType.INTEGER;
                    }
                    return typeRegistry.getColumnType(metaInfo);

                }))
                .packageConfig(builder -> {
                    builder.parent("com.giser.mp") // 设置父包名
                            .moduleName("user") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "D://")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude(scanner("表名,多个逗号分割").split(",")) // 设置需要生成的表名
                            // 设置过滤表前缀
                            .addTablePrefix("t_", "c_")
                            // controller
                            .controllerBuilder()
                                .enableFileOverride()
                                .enableRestStyle()
                                .enableHyphenStyle()
                            // entity
                            .entityBuilder()
                                .enableFileOverride()
                                .enableLombok()
                                // 基类
                                .superClass(BaseEntity.class)
                                .columnNaming(NamingStrategy.underline_to_camel)
                                // 启用lombok
                                .enableLombok()
                                // chain
                                .enableChainModel()
                            // service
                            .serviceBuilder()
                                .enableFileOverride()
//                                去掉默认的I前缀
                                .formatServiceFileName("%sService")
                            // mapper
                            .mapperBuilder()
                                .enableFileOverride()
                                .mapperAnnotation(org.apache.ibatis.annotations.Mapper.class)
                    ;

                })
                // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                // 将mybatis-plus-generator中的templates模板文件拷贝出来,并根据自身项目需要进行修改,如配置swagger等
                .templateConfig(builder -> {
                    builder.controller("/mybatisplustemplate/controller.java");
                    builder.service("/mybatisplustemplate/service.java");
                    builder.serviceImpl("/mybatisplustemplate/serviceImpl.java");
                    builder.mapper("/mybatisplustemplate/mapper.java");
                    builder.entity("/mybatisplustemplate/entity.java");
                    builder.xml("/mybatisplustemplate/mapper.xml");
                })
                .execute();
    }

    public static String scanner(String tip) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help);
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (StringUtils.isNotBlank(ipt)) {
                return ipt;
            }
        }
        throw new MybatisPlusException("请输入正确" + tip + "!");
    }

}

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值