mybatis-plus 代码生成工具-CURD 实践

工欲善其事,必先利其器!!!

1、pom 依赖

dao 模块 Pom 依赖

<!--  如果项目引入了,要去掉
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>
-->
<!-- 不用mybatis-spring-boot-starter,使用 mybatis-plus-boot-starter -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3.4</version>
</dependency>
 
<!-- mybatis-plus 自动生成代码 依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.30</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>

2、代码生成类

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.HashMap;
import java.util.Map;

    public class CodeGenerator {

        public static void main(String[] args) {

            String moduleNameOfService = "xxxx";
            String moduleNameOfDao = "xxxx";

            String servicePackageName = "xxxx";
            String serviceImplPackageName = "xxxx";
            String entityPackageName = "xxxx";
            String mapperPackageName = "xxxx";

            // 代码生成器
            FastAutoGenerator
                .create("jdbc:mysql://xxx:xxx/xxx?useUnicode=true","root", "xxxx")
                .globalConfig(builder -> {
                    builder.author("xxxx") // 设置作者
                        .fileOverride(); // 覆盖已生成文件
                })
                .packageConfig(builder -> {
                    String projectPath = System.getProperty("user.dir") + "/";

                    /**
                     * Java源文件的路径
                     */
                    Map<OutputFile, String> pathInfo = new HashMap<>();
                    String sourcePath = "/src/main/java/";
                    //entity 路径
                    pathInfo.put(OutputFile.entity, projectPath + moduleNameOfDao + sourcePath + entityPackageName.replaceAll("\\.", "\\/"));
                    //mapper 路径
                    pathInfo.put(OutputFile.mapper, projectPath + moduleNameOfDao + sourcePath + mapperPackageName.replaceAll("\\.", "\\/"));
                    //mapper xml文件 路径
                    pathInfo.put(OutputFile.mapperXml, projectPath + moduleNameOfDao + "/src/main/resources/xxx");
                    //service 路径
                    pathInfo.put(OutputFile.service, projectPath + moduleNameOfService + sourcePath + servicePackageName.replaceAll("\\.", "\\/"));
                    //service impl 路径
                    pathInfo.put(OutputFile.serviceImpl, projectPath + moduleNameOfService + sourcePath + serviceImplPackageName.replaceAll("\\.", "\\/"));

                    /**
                     * 类文件里边的包路径:package xxx.xxx.xxx
                     */
                    builder.parent(StringUtils.EMPTY).entity(entityPackageName)
                        .mapper(mapperPackageName)
                        .service(servicePackageName)
                        .serviceImpl(serviceImplPackageName)
                        .pathInfo(pathInfo);

                })
                .strategyConfig(builder -> {
                    /**
                     * 设置需要生成的表名
                     */
                    builder.addInclude("table1", "table2");
                    //mapper注解生效
                    builder.mapperBuilder().enableMapperAnnotation();
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
        }
    }

运行 main 函数即可生成对应文件!!!

posted @ 2021-10-29 18:19  fight-ing  阅读(340)  评论(0编辑  收藏  举报
Fork me on GitHub