码迷,mamicode.com
首页 > 移动开发 > 详细

spring boot+tkmybatis(mapper)工具实现通用数据操作接口时遇到的问题

时间:2018-02-02 22:05:04      阅读:1663      评论:0      收藏:0      [点我收藏+]

标签:primary   ...   gpo   遇到的问题   res   col   resource   mon   color   

最近在做一个sb+tkmybatis整合的可以提供通用数据操作接口的demo,然而出现了很诡异的事情.,使用mapper提供的selectByPrimaryKey接口返回结果时报异常: 


java.lang.ClassCastException: com.yhq.ssmdemo.web.mysql.pojo.Tree cannot be cast to com.yhq.ssmdemo.web.mysql.pojo.Trees

 

...什么鬼?自己转换自己?还报异常?搞了一整天都不知道怎么回事,去看mybatis源码,mapper源码,都没发现会造成这种问题的代码..然后在另外一个不用springboot的demo里面试了却不会出现这种问题。然后我又开始研究是不是spring boot自动配置时少了某些东西,但也没发现,而且也不会是这种问题吧...然后后面上网搜了下(之前也搜过,但可能关键字不准确导致搜出来的没有想要的结果),然后发现了一个同样的问题,说这是工具造成的一个bug,但我还以为是mapper工具,看了他给出的解决方案然后才知道是spring devtools这个工具。由于是本地开发的,所以用了spring devtools工具来进行监测代码修改自动重启,我们知道这个工具的原理就是使用两个类加载器,一个加载不会改变的第三方的依赖jar;另一个加载自己项目中自己编写的类。所以会出现这个异常就是由于这个问题导致的,下面上图,这样可以更加清晰直观地看出来,

这个是在项目启动spring devtools模块时进行堆dump的图,可以看到我自己写的许多类都有两个:

技术分享图片

这个是项目不启用spring devtools模块的堆dump图,自己写的类只有一个:

技术分享图片

所以这完全就是spring devtools的使用导致的,那怎么解决呢?让同一个类加载器去加载mapper的jar和自己写的实体类就行了:

在项目的src/main/resources目录下新建一个目录:META-INF,然后新建一个spring-devtools.properties文件,内容为:restart.include.companycommonlibs=tk/mybatis.*即可。

 

 

spring boot+tkmybatis(mapper)工具实现通用数据操作接口时遇到的问题

标签:primary   ...   gpo   遇到的问题   res   col   resource   mon   color   

原文地址:https://www.cnblogs.com/fakerblog/p/8406872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!