近期升级mybatis-plus遇到了一个奇怪问题,留个底吧。
近期在用ruoyi-cloud二开一个项目,整合过程中由于原来的业务模块是使用mybatis-plus,所以统一把common-core的配置增加了mybatis-plus-boot-starter。整合完毕后,其他模块整合后启动没有问题,但是自带的job和system模块启动报错:
Could not resolve type alias 'xxxxx'. Cause: java.lang.ClassNotFoundException: Cannot find class: xxxxx
检查了一圈也没发现问题,对报错位置的TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116)进行debug,发现启动过程没没有针对typeAliasesPackage配置的包进行扫码,造成实体类的别名没有生成记录。
经过测试把mapper.xml的type、parameterType修改成完整路径的类名是能启动成功,但是有点麻烦,system配置文件太多了。
自带模块没有改动过,nacos使用配置也是原来自带的。对比了启动成功的配置发现,原来是升级为mybaits-plus后需要把原来的配置
# mybatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.system
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath:mapper/**/*.xml
修改为:
# mybatis配置
mybatis-plus:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.system
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath:mapper/**/*.xml
mybaits-plus不认mybatis的typeAliasesPackage配置,启动时没有进行目录扫码。而升级或mybatis的扫码任务被覆盖了。