MybatisPlus代码生成初稿
数据源yml配置文件
spring:
datasource:
url: jdbc:mysql://localhost:3306/yourDatabase?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver # 用你自己的数据库地址
password: password # 用你自己的密码
username: username # 用你自己的账号
maven需要的基础依赖
<!--springboot集成mybatis、mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.11</version>
</dependency>
<!--mybatis-plus-->
<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>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
mp字段生成代码
/**
* @Author: hape
* @Date: 2022/9/29 15:08
*/
public class MybatisPlusGenerator {
/**
* 数据库配置
*/
private static DataSourceConfig DATA_SOURCE_CONFIG = new DataSourceConfig
.Builder("jdbc:mysql://localhost:3306/yourDataBase?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=GMT%2B8", "账号", "密码")
.dbQuery(new MySqlQuery())// 数据库查询->查字段名称、类型、备注 oracle用new OracleQuery()
.schema("mybatis-plus")// 数据库架构
.typeConvert(new MySqlTypeConvert())// 数据类型转换器 oracle用new OracleQuery()
.keyWordsHandler(new MySqlKeyWordsHandler())// 数据库关键字处理器 oracle用new OracleQuery()
.build();
/**
* 全局配置
*/
private static GlobalConfig GLOBAL_CONFIG = new GlobalConfig.Builder()
.fileOverride()// 是否覆盖以生成文件,默认:true
.outputDir("/com/ppx/user")// 指定输出目录
.author("hape")// 创建人名称
// .enableKotlin()// 开启kotlin模式 开启生成的文件不是java文件 .kt结尾
.enableSwagger()// 开启swagger注释
.dateType(DateType.TIME_PACK)// 时间策略
.commentDate("yyyy-MM-dd HH:mm:ss")// 注释日期
.build();
/**
* 包配置
*/
private static PackageConfig PACKAGE_CONFIG = new PackageConfig.Builder()
.parent("")// 生成地址:outputDir+parent
.moduleName("")
.entity("entity")// entity包名
.service("service")// service报名
.serviceImpl("service.impl")// service实现类包名
.mapper("mapper")// mapper包名
.controller("controller")
.other("other")// 输出自定义文件时用到的包名
.pathInfo(Collections.singletonMap(OutputFile.xml, "/com/ppx/user/mapper"))// xml文件输出路径配置信息
.build();
/**
* 模板配置
*/
private static TemplateConfig TEMPLATE_CONFIG = new TemplateConfig.Builder()
.disable(TemplateType.ENTITY)
.entity("/templates/entity.java")
.service("/templates/service.java")
.serviceImpl("/templates/serviceImpl.java")
.mapper("/templates/mapper.java")
.xml("/templates/mapper.xml")
.controller("/templates/controller.java")
.build();
/**
* 注入策略
*/
// private static InjectionConfig INJECTION_CONFIG = new InjectionConfig.Builder()
// .beforeOutputFile((tableInfo, objectMap) -> {
// System.out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size());
// })// 输出文件之前消费者
// .customMap(Collections.singletonMap("test", "baomidou"))//自定义配置 Map 对象
// .customFile(Collections.singletonMap("test.txt", "/templates/test.vm"))//自定义配置模板文件
// .build();
/**
* 策略配置
*/
private static StrategyConfig STRATEGY_CONFIG = new StrategyConfig.Builder()
.enableCapitalMode()// 开启大写命名
.enableSkipView()// 开启跳过视图
.disableSqlFilter()//禁用 sql 过滤
.likeTable(new LikeTable("USER"))//模糊表匹配(sql 过滤) likeTable 与 notLikeTable 只能配置一项
// .addInclude("t_simple")//增加表匹配(内存过滤) include 与 exclude 只能配置一项
.addTablePrefix("t_", "c_")//增加过滤表前缀
// .addFieldSuffix("_flag")//增加过滤表后缀
.build();
@SneakyThrows
@Test
public void start() {
AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
generator.strategy(STRATEGY_CONFIG)
.global(GLOBAL_CONFIG)
.packageInfo(PACKAGE_CONFIG)
.template(TEMPLATE_CONFIG)
.execute();
}
}
实体类缺陷展示
* <p>
*
* </p>
*
* @author hape
* @since 2022-09-29 16:29:54
*/
@ApiModel(value = "User对象", description = "")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
private String id;
@ApiModelProperty("名称")
@TableField("`name`")
private String name;
@ApiModelProperty("密码")
@TableField("`password`")
private String password;
@ApiModelProperty("身份证")
private String idCard;
@ApiModelProperty("手机号")
private byte[] phoneNumber;
@ApiModelProperty("头像")
private String headPicture;
@ApiModelProperty("住址")
private String address;
@ApiModelProperty("是否注销 0否1是")
private String isDeleted;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public byte[] getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(byte[] phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getHeadPicture() {
return headPicture;
}
public void setHeadPicture(String headPicture) {
this.headPicture = headPicture;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(String isDeleted) {
this.isDeleted = isDeleted;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name=" + name +
", password=" + password +
", idCard=" + idCard +
", phoneNumber=" + phoneNumber +
", headPicture=" + headPicture +
", address=" + address +
", isDeleted=" + isDeleted +
"}";
}
}
生成的代码还是有瑕疵的,但是基本能用了,id以及TableField需要另行处理下,getter&setter需要手动改lombok,等后续有时间再研究下怎么一次生成到位,如有懂的朋友,欢迎评论告知