Mybatis-plus代码生成器

通过mybatis-plus生成代码,写了一个示例,方便以后使用:

需要的依赖文件:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot4-starter</artifactId>
    <version>3.5.15</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.15</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.34</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.1</version>
</dependency>
<dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>beetl</artifactId>
    <version>2.9.10</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jdbc</artifactId>
</dependency>

 

package com.example.demo;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
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.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.generator.query.SQLQuery;
import com.example.demo.system.base.BaseDao;
import com.example.demo.system.base.IBaseDao;
import org.apache.ibatis.type.JdbcType;

import java.util.Collections;

public class GeneratorMysqlTest {
    public static void main(String[] args) {
        String basePath = "D:/develop/source/java/demo1/src/main/java";
        String basePath2 = "D:/develop/source/java/demo1/src/main/resources/mapper";

        String baskPackage = "com.example.demo.repository";

        // 使用 FastAutoGenerator 快速配置代码生成器
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai", "root", "root")
                .globalConfig(builder -> {
                    builder.author("Alan") // 设置作者
                            .commentDate("yyyy-MM-dd")
                            .outputDir(basePath);   // 输出目录


                })
                .dataSourceConfig(builder ->
                        builder.databaseQueryClass(SQLQuery.class)  //DefaultQuery (元数据查询)、SQLQuery (SQL查询)
                                .typeConvert(new MySqlTypeConvert())
                                .typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                                    if (JdbcType.TINYINT == metaInfo.getJdbcType()) {
                                        if (metaInfo.getLength() == 1) {
                                            return DbColumnType.BOOLEAN;
                                        }
                                        return DbColumnType.INTEGER;
                                    }
                                    if (JdbcType.SMALLINT == metaInfo.getJdbcType()) {
                                        return DbColumnType.INTEGER;
                                    }
                                    return typeRegistry.getColumnType(metaInfo);
                                })
                                .dbQuery(new MySqlQuery())
                )

                .packageConfig(builder -> {
                    builder.parent(baskPackage) // 设置父包名
                            .entity("model") // 设置实体类包名
                            .mapper("mapper") // 设置 Mapper 接口包名
                            .service("dao") // 设置 Service 接口包名
                            .serviceImpl("dao.impl") // 设置 Service 实现类包名
                            .xml("mappers") // 设置 Mapper XML 文件包名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, basePath2)); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder
//                            .addInclude("lx_user")
                            .controllerBuilder()
                            .disable(); // 设置需要生成的表名

                    builder
                            .serviceBuilder()
                            .enableFileOverride()
                            .superServiceClass(IBaseDao.class)
                            .superServiceImplClass(BaseDao.class)
                            .formatServiceFileName("I%sDao")
                            .formatServiceImplFileName("%sDaoImpl")
                            .build();

                    builder.mapperBuilder()
                            .enableBaseResultMap()
                            .enableBaseColumnList()
                            .enableFileOverride()
                            .enableMapperAnnotation()
//                            .generateMapperMethodHandler(new DefaultGenerateMapperMethodHandler())
                            .build();

                    builder.entityBuilder()
                            .enableRemoveIsPrefix()
                            .enableTableFieldAnnotation()
                            .enableFileOverride()
//                            .enableColumnConstant()
                            .enableSerialAnnotation()
//                            .fieldUseJavaDoc(true)
                            .toString(true)
                            .build();
                })
                /**
                 * VelocityTemplateEngine(Default)
                 * FreemarkerTemplateEngine
                 * BeetlTemplateEngine
                 * EnjoyTemplateEngine
                 */
                .templateEngine(new VelocityTemplateEngine()) // 使用 Freemarker 模板引擎
                .execute(); // 执行生成
    }
}
 
Copyright © 2008-2021 lanxinbase.com Rights Reserved. | 粤ICP备14086738号-3 |