Mybatis-Plus核心知识点梳理01-代码生成器

Mybatis-Plus官网:https://baomidou.com/

推荐使用它的生态技术:
image

核心功能技术

代码生成器:版本3.4.3
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

核心围绕:AutoGenerator对象展开:
  • GlobalConfig : 全局配置
    • setOutputDir(文件输出位置)
    • setOpen(是否打开文件)
    • setAuthor(设置作者)
    • setFileOverride(是否覆盖已有的文件)
    • setSwagger2(是否开启Swagger2注解)
    • setServiceName(去掉Service接口的首字母I)
    • setIdType(设置主键生成策略)
    • setBaseResultMap(设置生成BaseResultMap)
    • setBaseColumnList(生成sql全字段)
    • setDateType(设置时间类型)
  • DataSourceConfig(数据源配置)
    • setUrl (数据库连接的URL:jdbc:mysql://localhost:3306/study)
    • setDriverName(数据库连接驱动名)
    • setUsername
    • setPassword
    • setDbType (数据库方言)
  • PackageConfig(包生成位置配置以及名称)
    • setModuleName(模块名)
    • setParent(父级包目录)
    • setController
      setEntity
      setService
      setMapper
  • StrategyConfig(策略配置)
    • setInclude (自动生代码成基于的表:可变参数)
    • setNaming(表映射到实体类的命名策略:下划线转驼峰)
    • setTablePrefix(生成实体提出前缀)
    • setColumnNaming(列名命名策略:下划线转驼峰)
    • setEntityLombokModel(开启实体类Lombok注解)
    • setRestControllerStyle(设置Controller基于RESTFUL风格)
    • setControllerMappingHyphenStyle(设置url中驼峰转连字符)
    • setSuperEntityClass(继承父类)
  • TemplateEngine(模板引擎)
  • execute执行
核心围绕:AutoGenerator对象展开:
  • GlobalConfig : 全局配置
    • setOutputDir(文件输出位置)
    • setOpen(是否打开文件)
    • setAuthor(设置作者)
    • setFileOverride(是否覆盖已有的文件)
    • setSwagger2(是否开启Swagger2注解)
    • setServiceName(去掉Service接口的首字母I)
    • setIdType(设置主键生成策略)
    • setBaseResultMap(设置生成BaseResultMap)
    • setBaseColumnList(生成sql全字段)
    • setDateType(设置时间类型)
  • DataSourceConfig(数据源配置)
    • setUrl (数据库连接的URL:jdbc:mysql://localhost:3306/study)
    • setDriverName(数据库连接驱动名)
    • setUsername
    • setPassword
    • setDbType (数据库方言)
  • PackageConfig(包生成位置配置以及名称)
    • setModuleName(模块名)
    • setParent(父级包目录)
    • setController
      setEntity
      setService
      setMapper
  • StrategyConfig(策略配置)
    • setInclude (自动生代码成基于的表:可变参数)
    • setNaming(表映射到实体类的命名策略:下划线转驼峰)
    • setTablePrefix(生成实体提出前缀)
    • setColumnNaming(列名命名策略:下划线转驼峰)
    • setEntityLombokModel(开启实体类Lombok注解)
    • setRestControllerStyle(设置Controller基于RESTFUL风格)
    • setControllerMappingHyphenStyle(设置url中驼峰转连字符)
    • setSuperEntityClass(继承父类)
  • TemplateEngine(模板引擎)
  • execute执行

代码如下

package com.gton.lpl;


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @program: 代码生成器
 * @description: mybatis-plus逆向工程
 * @author: GuoTong
 * @create: 2020-11-04 15:25
 **/
public class CodeGenerator {
    public static void main(String[] args) {
        // 1、创建代码生成器
        System.out.println("开始代码生成器创建");
        AutoGenerator mpg = new AutoGenerator();

        // 2、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("GuoTong");
        gc.setOpen(false); //生成后是否打开资源管理器
        gc.setFileOverride(false); //重新生成时文件是否覆盖
        gc.setServiceName("%sService"); //去掉Service接口的首字母I
        gc.setIdType(IdType.ASSIGN_ID); //主键策略 ||选择
        gc.setBaseResultMap(true); //设置resultMap
        gc.setBaseColumnList(true);//设置sql全字段标签
        /*java8 新的时间类型:DateType.TIME_PACK;原来的 java.util.date:ONLY_DATE*/
        gc.setDateType(DateType.TIME_PACK);//定义生成的实体类中日期类型
        gc.setSwagger2(true);//开启Swagger2模式

        mpg.setGlobalConfig(gc);

        // 3、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();//study
        dsc.setUrl("jdbc:mysql://localhost:3306/study?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC");
        dsc.setDriverName("com.mysql.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 4、包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(null); //模块名
        pc.setParent("com.gton.lpl");
        pc.setController("controller");
        pc.setEntity("entity");
        pc.setService("service");
        pc.setMapper("mapper");
        mpg.setPackageInfo(pc);

        // 5、策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude("gp_item");//对那一张表生成代码||可变参数,可以多个
        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀

        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

        mpg.setStrategy(strategy);

        // 6、执行
        mpg.execute();

        //结束
        System.out.println("代码生成成功!!");


    }
}

3.5.1版本以上:新版代码生成器

官网配置:https://baomidou.com/pages/981406/

package com.gton.god;

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.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

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

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

    private final String driver = "com.mysql.jdbc.Driver";

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


    public static void main(String[] args) {
        AutoGeneratorTools autoGeneratorTools = new AutoGeneratorTools();
        String userDir = System.getProperty("user.dir");
        String modelName = "/NewBoot8088/";
        String path = "src/main/java";
        String parentPath = "com.gton.god";
        String mapperXmlPath = "/com/gton/god/mapper/xml";
        List<String> tables = new ArrayList<>();
        tables.add("gp_login");

        FastAutoGenerator.create(autoGeneratorTools.getDataConfigBuilder()).
                globalConfig(builder ->
                        builder.author("GuoTong").
                                commentDate("yyyy-MM-dd").
                                enableSwagger().
                                dateType(DateType.SQL_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() {

        return new DataSourceConfig.Builder(url, username, password).
                dbQuery(new MySqlQuery()).
                keyWordsHandler(new MySqlKeyWordsHandler()).
                schema("Mybatis-Plus").
                typeConvert(new MySqlTypeConvert());
    }
}

posted on   白嫖老郭  阅读(523)  评论(1编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示