Mybatis-Plus核心知识点梳理01-代码生成器
Mybatis-Plus官网:https://baomidou.com/
推荐使用它的生态技术:
核心功能技术
代码生成器:版本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版本以上:新版代码生成器
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());
}
}
作者:隔壁老郭
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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代理技术深度解析与实战指南