问题1:
使用inserList报错
java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.SpecialProvider.
解题思路:
1 jvm找不到对应的class文件,一种情况是maven包没有引用,此类在core包中,一种是jar包冲突
2 @Mappscan注解使用错了,用的Spring的Mapperscan,替换为tkmybatis的Mappersan
3 mapper-spring-boot-starter 版本过低,需要升级版本,比如1.2.3升级至2.0.2问题解决
第三种思路需要深入源码解析
问题定位在
ProviderSqlSource 调用createSqlSource 获取构造方法的时候,调用了getDecalaredConstrator();
获取不到对应的构造器,然后调用newInstance导致无法创建对象,其实并不是Jvm虚拟机没有加载到对应的class文件,而是构造对象的时候没找到合适的构造器导致的
TODO 待定补充
吐槽
现在开发封装的mybatis常用插件有两款tk-mybatis mybatis-plus;从个人使用角度出发,其实不推荐使用,这两款插件其实就是避免了大家写SQL,但是作为一名开发人员,你不会写SQL那就是开玩笑,这两款插件使用弊端繁多,出了问题,就得看源码分析,简直头疼,就算你用的精通了,但是问题排查还是坑,还需要去解析SQL,还原出来,而且复杂的SQL用插件实现远不如直接写SQL,因此不建议大家使用,毕竟插件的使用是为了简化大家开发工作,但是工具的复杂度,容错率反而复杂化了开发工作量,那还不如不用,直接使用原生mybatis。



