您现在的位置是:首页 >学无止境 >MyBatis Plus 代码生成器网站首页学无止境
MyBatis Plus 代码生成器
简介MyBatis Plus 代码生成器
一、引入POM依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.30</version>
</dependency>
二、编写代码
2.1、官方文档
2.2、编写代码
提供直接可以的代码,额外需要增加配置参考官方文档即可
package com.xx;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import com.xx.common.BaseEntity;
import java.util.Collections;
/**
* @author aqi
*/
public class CodeGenerator {
public static void main(String[] args) {
AutoGenerator generator = new AutoGenerator(dataSourceConfig());
generator
.global(globalConfig())
.packageInfo(packageConfig())
.strategy(strategyConfig()).execute();
}
private static DataSourceConfig dataSourceConfig() {
return new DataSourceConfig
.Builder("jdbc:mysql://127.0.0.1:3306/demo?serverTimezone=GMT%2b8&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false","root","root")
.dbQuery(new MySqlQuery())
.build();
}
/**
* 全局配置
*
* @return GlobalConfig
*/
private static GlobalConfig globalConfig() {
return new GlobalConfig.Builder()
// 指定输出目录
.outputDir(System.getProperty("user.dir") + "\src\main\java")
// 作者名
.author("aqi")
// 开启 swagger 模式
.enableSwagger()
// 禁止打开目录
.disableOpenDir()
.build();
}
/**
* 包配置
*
* @return PackageConfig
*/
private static PackageConfig packageConfig() {
return new PackageConfig.Builder()
.parent("com.xx.demo")
// .moduleName("demo")
.entity("entity")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.xml("mapper.xml")
.controller("controller")
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\src\main\resources\mapper"))
.build();
}
/**
* 策略配置
*
* @return StrategyConfig
*/
private static StrategyConfig strategyConfig() {
return new StrategyConfig.Builder()
.disableSqlFilter()
.addInclude("airlines_info")
// entity文件策略
.entityBuilder()
// 设置父类
.superClass(BaseEntity.class)
// 开启 lombok 模型
.enableLombok()
// 添加父类公共字段(这些字段将不在实体中生成)
.addSuperEntityColumns("create_time", "update_time")
// 全局主键类型
.idType(IdType.AUTO)
// 添加表字段填充
// .addTableFills(new Column("create_time", FieldFill.INSERT))
// .addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))
// 逻辑删除字段名(数据库)
.logicDeleteColumnName("deleted")
// controller文件策略
.controllerBuilder()
.enableRestStyle()
// service文件策略
.serviceBuilder()
.formatServiceFileName("%sService")
.build();
}
}
三、使用MybatisX生成代码
3.1、安装MybatisX插件

3.2、使用idea配置Database

3.3、使用生成代码
3.3.1、选择需要生成代码的表

3.3.2、配置代码生成路径、包名

| 配置项 | 说明 |
|---|---|
| module path | 代码生成模块 |
| base package | 包路径 |
| encoding | 文件编码格式 |
| superClass | 生成实体类集成的父类 |
| base path | 根路径,默认不需要修改 |
| ignore field prefix | 忽略的字段前缀 |
| ignore table prefix | 忽略的表前缀 |
| relative package | 实体类所在包的名称 |
| ignore field suffix | 忽略的字段后缀 |
| ignore table suffix | 忽略的表后缀 |
| extra class suffix | 增加实体类后缀 |
| class name strategy | 类名生成测类额,camel:驼峰,same as tablename:和表名一样,默认为camel就可以 |
| tableName | 带生成代码的表名 |
| className | 生成的类名,可以直接修改 |
3.3.3、配置代码生成使用的模板

| 配置项 | 说明 |
|---|---|
| none | 不使用mybatis plus的模板 |
| Mybatis-Plus 3 | 使用Mybatis plus 3版本的模板 |
| Mybatis-Plus 2 | 使用Mybatis plus 2版本的模板 |
| JPA | JPA模板 |
| Comment | 增加表和字段注释,增加主键注解,建议勾选 |
| toString/hashCode/equals | 生成toString/hashCode/equals方法,不推荐开启,直接使用Lombok即可 |
| Lombok | 使用Lombok注解 |
| Actual Column | 实体名称和表字段名称保持一致 |
| Actual Column Annotation | 上面勾选了Mybatis-Plus 3这项配置没有作用 |
| JSR310:Date API | 使用新的时间类,不开启datetime实体类映射为Date,开启之后映射为LocalDateTime |
| Model | 是否生成实体类 |
| custom-model-swagger | 生成swagger模板的字段注释,并且还会按照字段长度生成jsr303的字段校验注解 |
| default-all | 不使用mybatis plus的模板, 生成mybatis的模板 |
| default-empty | 只生成类,没有模板代码 |
| mybatis-plus2 | 使用Mybatis plus 2版本的模板 |
| mybatis-plus3 | 使用Mybatis plus 3版本的模板 |
四、总结
两种方式都可以生成代码,使用代码的方式更加灵活一些,代码也更加方便管理,使用插件更加快捷一点,也可以自定义修改插件模板,但是不方便团队维护
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结