springboot集成mybatis-plus(二)自动生成基础代码篇(基于mybatis-plus3.5.2+版本)


前言

提高开发效率的必备神器mybatis-plus,你值得学一学

一、为啥要使用mybatis-plus3.5.2+版本呢?

由于老版本存在很多问题以及新老版本之间的不兼容、在此重新再发一篇,使用老版本的可以参考老版本的代码生成

二、使用步骤

1.项目pom中引入以下需要的依赖

代码如下:

		<!--mybatis_plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
            <version>3.5.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

2.编写代码生成类

代码如下:

package com.mybatisplus.generator.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.NamingStrategy;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

import java.util.Collections;

public class CodeGenerator {
    public static void main(String[] args) {
        FastAutoGenerator.create(
                new DataSourceConfig
                        // 数据库连接地址
                        .Builder("jdbc:mysql://127.0.0.1:3306/test",
                        // 用户名
                        "root",
                        // 密码
                        "root")
                        // 设置数据库类型
                .dbQuery(new MySqlQuery())
                        // 数据库名
                .schema("test")
                        // 类型转换这里是mysql,选择自己使用的数据库对应的转换类就可以
                .typeConvert(new MySqlTypeConvert())
                        // 数据库关键词处理
                .keyWordsHandler(new MySqlKeyWordsHandler())
                )
                .globalConfig(builder -> {
                    // 设置作者
                    builder.author("wutt")
                            // 开启 swagger 模式
//                            .enableSwagger()
                            // 覆盖已生成文件,3.5.3会被删除,不建议使用
                            .fileOverride()
                            //禁止打开输出目录
                            .disableOpenDir()
                            // 指定输出目录
                            .outputDir(getBasePath() + "/src/main/java");
                }).strategyConfig(builder -> {
                    // 去除的表前缀,默认生成所有表对应的实体
                    builder.addTablePrefix("t_")
                            // 添加需要生成实体的表名
//                            .addInclude("t_user")
                            // 添加不需要生成实体的表名
//                            .addExclude("t_user")

                            // 控制器controller配置
                            .controllerBuilder()
                            // 开启生成@RestController 控制器
                            .enableRestStyle()
                            // 开启驼峰转连字符
                            .enableHyphenStyle()
                            // 开启父类
//                            .superClass("com.mybatisplus.generator.controller.BaseController")
                            // 控制器统一后缀
                            .formatFileName("%sController")

                            // service配置
                            .serviceBuilder()
                            // service统一后缀
                            .formatServiceFileName("%sService")
                            // serviceImpl统一后缀
                            .formatServiceImplFileName("%sServiceImpl")

                            //mapper配置
                            .mapperBuilder()
                            // 生成基础字段的map映射map
                            .enableBaseResultMap()
                            // 生成基础查询的sql
                            .enableBaseColumnList()

                            // 实体类配置
                            .entityBuilder()
                            // 开启链式模型,开启lombok模型不需要开启这个
//                            .enableChainModel()
                            // 开启lombok模型
//                            .enableLombok()
                            // 开启表字段注解
                            .enableTableFieldAnnotation()
                            // 逻辑删除字段
                            .logicDeleteColumnName("is_deleted")
                            // 数据库表映射到实体的命名策略
                            .naming(NamingStrategy.underline_to_camel)
                            // 数据库表字段映射到实体的命名策略,驼峰命名,这个未设置会按照naming来配置
//                            .columnNaming(NamingStrategy.underline_to_camel)
                            // 指定实体类父类
//                            .superClass("com.mybatisplus.generator.entity.BaseEntity")
                            // 父类字段
//                            .addSuperEntityColumns("id", "create_id", "modify_id", "create_date", "modify_date", "is_deleted")
//                             开启 ActiveRecord 模式,即实体类继承Model类,自己提供CRUD操作,不建议使用,会和父类形成单继承冲突
//                            .enableActiveRecord()
                            // 表字段填充字段,对应数据库字段,插入的时候自动填充
                            .addTableFills(new Column("create_date", FieldFill.INSERT))
                            // 表字段填充字段,对应实体类字段,插入的时候自动填充
                            .addTableFills(new Property("createDate", FieldFill.INSERT))
                            // 表字段填充字段,对应数据库字段,更新的时候自动填充
                            .addTableFills(new Column("modify_date", FieldFill.UPDATE))
                            // 表字段填充字段,对应实体类字段,更新的时候自动填充
                            .addTableFills(new Property("modifyDate", FieldFill.UPDATE))
                            // 忽略的字段
//                            .addIgnoreColumns("version")
                            // id自增
                            .idType(IdType.AUTO)
                            // 实体类统一后缀
                            .formatFileName("%sEntity");

                })
                .packageConfig(builder -> {
                            // 设置父包名
                    builder.parent("com.mybatisplus.generator")
                            // 设置父包模块名
//                            .moduleName("test")
                            //设置entity包名
                            .entity("entity")
                            // 设置service包名
                            .service("service")
                            // 设置serviceImpl包名
                            .serviceImpl("service.impl")
                            // 指定mapper.xml生成的路径
                            .pathInfo(Collections.singletonMap(OutputFile.xml, getBasePath() + "/src/main/resources/mapper")); // 设置mapperXml生成路径
                }
                ).execute();
    }

    /**
     * 获取当前项目的输出路径
     * @return 当前项目的输出路径
     */
    public static String getBasePath(){
        return System.getProperty("user.dir");
    }
}


运行下该类的main方法,最后项目结构下的所有目录及类都生成了

在这里插入图片描述


总结

那么恭喜你,代码生成所有的都完成了,接下来就可以愉快的开发你的业务了


版权声明:本文为qq_43436985原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。