起因
最近在给老项目升级,有个项目是MyBatis写的。
SQL语句是写在XML里面的,ResultMap写了一百多行,整个文件上千行。代码混乱不好管理,就计划升级到MyBatis Plus。
采用在Java类中用Java代码实现的方式,简化XML文件。
原本计划MyBatis和MyBatis Plus一起使用,转念一想,反正要升级,不如彻底一点,直接全部都换成MyBatis Plus。
总结了几个升级步骤,如果你们需要升级可以参考:
经过上面几个步骤,基本就接入到MyBatis Plus了。
如果还有特别复杂的SQL怎么办?
像之前一样编写XML,返回类型指定相应的类名。
异常怎么触发的?
异常信息如下:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.OrderMapper.queryOldOrder
大概意思就是找不到这个方法。
找了半上午,一直找不到原因。
各种找,后面在看配置信息的时候,似乎发现了问题。
忘了改配置
由于是从老配置转过来的,之前的配置如下:
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
type-aliases-package: com.example.entity
configuration:
cache-enabled: true
use-generated-keys: true
default-executor-type: simple
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
问题出在mapper-locations的路径上,实际上我的xml映射文件在mapper/system/这个路径下面。
看出端倪之后,将xml映射文件移动到/main/resources/mapper/目录下,编译,再次运行就没报错了。
总结一下,MyBatis Plus或者MyBatis报错的时候,先检查一下配置是否正确。
又是天天上一当,当当不一样。