前言
发布这篇文章是记录我在项目开发时使用 Mybatis-plus 逆向工程时遇到并解决的问题。
在开发前不久,像是一两个月的样子,Mybatis-plus 逆向工程就在我玩过 Mybatis 的逆向后我就做了个小 demo 玩了一下,那个时候用的是 Mybatis-plus-generator 的旧版本 3.4.0。但气人的就是那个时候多次试用测试都相当好用,直到这一天我开发项目时重新用了一遍,就出问题了。。
问题出现
因为原本的代码被我优化掉了,所以现有项目存在的是能够正常使用的代码,那么我就简单讲一下问题:
1. 生成目录而不生成目录下的文件
ps:看到 p1 的同学估计会猜测是我的路径出现了问题,或者是配置信息不全。但这些我都是一一排除,并不是这里的问题。
2. 生成到其他地方,死活不去到工程模块中
ps:这个类我加上了 @Deprecated 注解,后续会提供一下源码仓库地址。
问题解决
在百度转了好几圈,一无所获。解决的人方式无非就是检查数据源url、数据库表名提供。这些当然我也仔细检查过,包括从仓库拉回原来的小 demo 跑,一跑哭笑不得:原本一两个月前好好的 demo 现在一跑就崩了。最终认为是版本问题
下面是项目代码片段
部分依赖
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
<groupId>com.baomidou </groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
```
Config 包下的 MpGeneratorConfigur 配置类
```java
package cn.deities.colleges.config;
import cn.deities.colleges.utils.SimpleDataSourceInfoParser;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.fill.Column;
import lombok.extern.slf4j.Slf4j;
import java.util.Collections;
import java.util.Objects;
import static cn.deities.colleges.constant.UrlPackage.*;
import static cn.deities.colleges.utils.abstractor.AbstractDataSourceInfoParser.*;
/**
* @author 1.
* @version 1.0
* @description: Mybatis-plus generator 代码自动生成器
* @date 2023/4/17 16:33
*/
@Slf4j
public class MPGeneratorConfigur {
public static void main(String[]args) {
/// 获取数据源信息解析器
final SimpleDataSourceInfoParser simpleDataSourceInfoParser =new SimpleDataSourceInfoParser();
/// 代码生成器
FastAutoGenerator.create(URL, USER_NAME, PASS_WORD)
.globalConfig(builder -> {
builder.author("1.")
.commentDate("yyyy-MM-dd")
.dateType(DateType.ONLY_DATE)
.outputDir(ROOT_PROJECT_URL);
})
.packageConfig(builder -> {
builder.parent(PARENT_URL)
.entity("po")
.service("bo")
.serviceImpl("bo.impl")
.mapper("dao")//映射类
.xml("")
.pathInfo(Collections.singletonMap(OutputFile.xml, XML_URL));
})
.strategyConfig(builder -> {
builder.addInclude(Objects.requireNonNull(simpleDataSourceInfoParser.getTableNames("colleges")))
.enableCapitalMode();
//Mapper 策略配置
builder.mapperBuilder()
.enableFileOverride()//生成文件时覆盖原有文件
.superClass(BaseMapper.class)
.formatMapperFileName("%sMapper")
.formatXmlFileName("%sXml");
//Entity 策略配置
builder.entityBuilder()
.enableFileOverride()
.enableChainModel()//开启链式模型
.enableLombok()
.enableTableFieldAnnotation()
.addTableFills(new Column("create_time", FieldFill.INSERT),
new Column("storage_time",FieldFill.INSERT));
//Service 策略配置
builder.serviceBuilder()
.enableFileOverride()
.superServiceClass(IService.class)//服务接口父接口
.superServiceImplClass(ServiceImpl.class); //服务实现类父类
})
.templateConfig(builder -> {
builder.disable(TemplateType.CONTROLLER);
})
.execute();
}
}
```
结果
到这里终于是费力地实现了省力工程哈哈哈。
ps:上述代码截取自我正开发的项目,提供给大家参考,可以学习使用的源码地址在这。其中的 Mybatis-generator 是否可用也没有去追究了,等我用到再说吧。
时刻保持谦卑的心,学无止境!