MyBatisPlus注入公共Sql问题

       同事新建项目运行CRUD时发现MyBatis的Mapper找不到对应方法,该方法为AutoMapper中的公共方法。

       在此之前做了一次依赖及配置清理,怀疑是否不小心多删除了什么或是版本变化导致出了问题。把该项目还原就不会出现此问题,间接证明了此猜想。但另外一个项目同样的框架环境确是正常,所以肯定不是版本的问题。公司MyBatisPlus的版本是1.x版本,同事之前用的版本是2.x。

       我从MyBatisPlus的MybatisSqlSessionFactoryBean初始化一步一步的Debug,到MybatisXMLMapperBuilder(2.x中为XMLMapperBuilder)的parse()里的bindMapperForNamespace()方法。首先会判断你的Mapper接口是否继承至BaseMapper,如果是则使用AutoSqlInjector进行公共增删改查方法的注入。2.x则是在MybatisConfiguration.addMapper里调用MybatisMapperAnnotationBuilder.parse()中做此判断的。

       在1.x中会判断实体类是否配置了主键(@TableId),如果没有配置则所有公共Sql都不会注入。而在2.x中如果没配置主键除了必须要主键的Sql外,其它的Sql还是会注入。

       返回项目中一看实体类果然没配置主键,加上@TableId一切正常,Perfect!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值