MyBatisPlus注入公共Sql问题

来源:互联网 发布:网络自制剧排行榜 编辑:程序博客网 时间:2024/06/16 11:26

       同事新建项目运行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!

原创粉丝点击