Mybatis迁移到Mybatis-Plus
由于原来项目中已有很多功能和包,想迁移到Mybatis-Plus,旧的还是继续用 Mybatis和PageHelper,新的准备全部用Mybatis-Plus。迁移遇到了各种错误,记录一下,特别是这个错误:mybatis-plus org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):,花了差不多一天时间,都差点准备撤子模块了,将旧的一个模块,新的一个模块。
一、Mybatis-Plus依赖
后面还准备新建对象,把代码生成器也加进来了。
<!-- SpringBoot集成mybatis plus框架 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${
mybatis.plus.version}</version>
</dependency>
<!-- mybatis-plus-generator 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${
mybatis.plus.generator.version}</version>
</dependency>
<!-- mybatis plus生成代码的模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${
velocity.engine.version}</version>
</dependency>
在这儿遇到第一个问题,原模板有Velocity 1.7版本,在代码生成器中有需要用velocity-engine-core,这两个不能同时引用,会有冲突。将Velocity引用去掉,在服务器监控程序有一个下面语句不能用,注释掉,好像没有什么影响。
p.setProperty(Velocity.OUTPUT_ENCODING, Constants.UTF8);
二、创建代码生成器
参考官方文档,找个单独的包,创建代码生成器。在原来的模块上增加后,各种不能使用,没有办法,新建了一个全新的文件,生产对象代码,创建测试对象,可以运行,到了原来的程序上好多问题,后检查大部分是引用包之间版本冲突造成,主要是:
1、不要保留Mybatis的依赖,用最新的Mybatis-plus-boot-start就行
2、Mybatis-plus版本也会不影响,我用的是3.3.1
3、包的位置影响很大,接口文件一定要在@MapperScan(“com.xiyou.project.**.mapper”)包含的目录下,
4、配置文件要正确,生成代码要在配置文件包含下:
# MyBatis-plus配置
mybatis-plus:
# 搜索指定包别名
type-aliases-package: com.xiyou.project.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapper-locations: classpath*:mybatis/**/*Mapper.xml
// 执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
public class MpGenerator {
/**
* <p>
* 读取控制台内容
* </p>
*/
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in