欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決tk mapper 通用mapper的bug問題

 更新時間:2021年06月15日 16:52:34   作者:-droidcoffee-  
這篇文章主要介紹了解決tk mapper 通用mapper的bug問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

如下所示:

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.isea533.mybatis.mapper"/>
            <property name="properties">
                <value>
                    mappers=tk.mybatis.mapper.common.Mapper
                </value>
            </property>
        </bean>

basePackage的屬性值 不能包含通用mapper所在的包

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2018-03-14 12:39:21.741 ERROR [main] [hio-sys] o.s.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tk.mybatis.mapper.autoconfigure.MapperAutoConfiguration': Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'baseMapper' defined in file []: Invocation of init method failed; nested exception is tk.mybatis.mapper.MapperException: tk.mybatis.mapper.MapperException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:137)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.__refresh(AbstractApplicationContext.java:543)
    at org.springframework.context.support.AbstractApplicationContext.jrLockAndRefresh(AbstractApplicationContext.java)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
    at com.jzy.hio.HioSysApplication.main(HioSysApplication.java:35)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'baseMapper' defined in file [C:\Users\coffee\OneDrive\workspace\v2r1-hio-base\target\classes\com\jzy\hio\base\mapper\BaseMapper.class]: Invocation of init method failed; nested exception is tk.mybatis.mapper.MapperException: tk.mybatis.mapper.MapperException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType_jrOrig(DefaultListableBeanFactory.java:519)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType_jrOrig(DefaultListableBeanFactory.java:508)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java)
    at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1188)
    at tk.mybatis.mapper.autoconfigure.MapperAutoConfiguration.addPageInterceptor(MapperAutoConfiguration.java:71)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
    ... 18 common frames omitted
Caused by: tk.mybatis.mapper.MapperException: tk.mybatis.mapper.MapperException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at tk.mybatis.mapper.mapperhelper.MapperHelper.setSqlSource(MapperHelper.java:248)
    at tk.mybatis.mapper.mapperhelper.MapperHelper.processConfiguration(MapperHelper.java:311)
    at tk.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:54)
    at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
    ... 39 common frames omitted
Caused by: tk.mybatis.mapper.MapperException: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at tk.mybatis.mapper.mapperhelper.MapperTemplate.setSqlSource(MapperTemplate.java:258)
    at tk.mybatis.mapper.mapperhelper.MapperHelper.setSqlSource(MapperHelper.java:245)
    ... 44 common frames omitted
Caused by: java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
    at tk.mybatis.mapper.mapperhelper.MapperTemplate.getEntityClass(MapperTemplate.java:290)
    at tk.mybatis.mapper.provider.base.BaseSelectProvider.selectOne(BaseSelectProvider.java:50)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at tk.mybatis.mapper.mapperhelper.MapperTemplate.setSqlSource(MapperTemplate.java:246)
    ... 45 common frames omitted

(通用mapper)項目升級通用Mapper引發(fā)的一連串問題以及問題解決

項目環(huán)境

通用Mapper版本

 <dependency>
  <groupId>tk.mybatis</groupId>
  <artifactId>mapper-spring-boot-starter</artifactId>
  <version>1.1.5</version>
 </dependency>

Spring boot版本

 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.9.RELEASE</version>
  <relativePath />
 </parent>

公司統(tǒng)一封裝了三個核心包(kemean-aid、kemean-third、kemean-web),平時技術(shù)開發(fā)都是把三核心包下載源碼到本地啟動運(yùn)行,這個星期把三個核心包打包成jar,讓項目依賴jar啟動,但啟動的時候報了一個maven錯誤(問題一)。

問題一

Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/springframework/boot/devtools/restart/classloader/RestartClassLoader) previously initiated loading for a different type with name "tk/mybatis/mapper/common/Mapper"

maven報了一個重復(fù)引用通用Mapper Jar錯誤,但反復(fù)查看maven引用,并沒有發(fā)現(xiàn)有重復(fù)引用通用Mapper jar包,而且項目引用源碼啟動是正常運(yùn)行的,這個問題著實(shí)報得有點(diǎn)詭異!因?yàn)榻?jīng)驗(yàn)問題,重復(fù)就maven報的這個問題尋找重復(fù)引用的jar,然而處理了很久也并沒有解決。后來查看通用mapper的版本maven倉庫(https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter) ,發(fā)現(xiàn)公司現(xiàn)在使用的版本已經(jīng)更新好多個版本了,第一直覺認(rèn)為是公司用的1.1.5這個版本有問題,于是乎升級了通用mapper版本到2版本(當(dāng)前最新2.0.4),就這樣掉大坑了,開始一系列的問題解決的路程。

 <dependency>
     <groupId>tk.mybatis</groupId>
     <artifactId>mapper-spring-boot-starter</artifactId>
     <version>2.0.4</version>
 </dependency>

以下的問題都是在2版本的通用mapper中遇到的

問題二

tk.mybatis.mapper.MapperException: 無法獲取實(shí)體類com.kemean.bean.KemeanAdminUser對應(yīng)的表名!

github也有此問題的討論:https://github.com/abel533/MyBatis-Spring-Boot/issues/18

問題解決

修改啟動類@MapperScan注解

2版本的通用Mapper提供了@MapperScan注解,之前我們使用的是org.mybatis.spring.annotation.MapperScan,現(xiàn)需把@MapperScan改為tk.mybatis.spring.annotation.MapperScan

添加spring-devtools.properties文件

在項目src/main/resources目錄新建一個文件夾META-INF(項目右鍵-new-Source Folder),添加熱部署配置文件spring-devtools.properties,在文件里面添加restart.include.companycommonlibs=tk/mybatis.*

問題三

tk.mybatis.mapper.MapperException: tk.mybatis.mapper.provider.EmptyProvider中缺少selectOne方法!

github也有此問題的討論:

https://github.com/abel533/MyBatis-Spring-Boot/issues/92

https://github.com/abel533/MyBatis-Spring-Boot/issues/53

問題解決:把項目熱部署去掉

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 <scope>runtime</scope>
</dependency>

在處理完問題二、三,通用Mapper就升級成功了,項目也能夠正常啟動訪問,但是,咱們在處理問題三的時候,把spring boot的熱部署給去掉了,這就意味著咱們?nèi)蘸竺扛膭右稽c(diǎn),都需要重新啟動部署服務(wù),這是士可忍,叔不可忍;叔可忍,嬸也不能忍的操作啊。

嘗試過好多方式,都不能“升級通用mapper2版本”與“保留Spring boot熱部署”兩個兼得,后來看到這哥們的一句話,給了我一個提醒,于是乎在剛才添加的spring-devtools.properties文件再補(bǔ)充一行restart.include.companycommonlibs=kemean.*

spring-devtools.properties內(nèi)容(kemean.*是公司jar的前綴)

restart.include.companycommonlibs=tk/mybatis.*
restart.include.companycommonlibs=kemean.* 

https://github.com/abel533/MyBatis-Spring-Boot/issues/53

在這里插入圖片描述

再啟動服務(wù),服務(wù)正常使用,熱部署也能夠保留

問題一的最終解決

結(jié)合問題三的解決思路,那么咱們在不升級通用mapper的前提下,讓項目依賴打包出來的jar運(yùn)行,則僅需在

項目src/main/resources目錄新建一個文件夾META-INF(項目右鍵-new-Source Folder),添加熱部署配置文件spring-devtools.properties,在文件里面添加

restart.include.companycommonlibs=kemean.* 

問題一就在不升級通用mapper下完美解決了~

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java布隆過濾器的應(yīng)用實(shí)例

    Java布隆過濾器的應(yīng)用實(shí)例

    這篇文章主要介紹了Java布隆過濾器的應(yīng)用實(shí)例,在程序的世界中,布隆過濾器是程序員的一把利器,利用它可以快速地解決項目中一些比較棘手的問題,如網(wǎng)頁?URL?去重、垃圾郵件識別、大集合中重復(fù)元素的判斷和緩存穿透等問題,需要的朋友可以參考下
    2023-11-11
  • Spring Boot之FilterRegistrationBean-自定義Filter詳解

    Spring Boot之FilterRegistrationBean-自定義Filter詳解

    這篇文章主要介紹了Spring Boot之FilterRegistrationBean-自定義Filter詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 基于Java網(wǎng)絡(luò)編程和多線程的多對多聊天系統(tǒng)

    基于Java網(wǎng)絡(luò)編程和多線程的多對多聊天系統(tǒng)

    這篇文章主要介紹了基于Java網(wǎng)絡(luò)編程和多線程的多對多聊天系統(tǒng),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java網(wǎng)絡(luò)編程的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java分支結(jié)構(gòu)程序設(shè)計實(shí)例詳解

    Java分支結(jié)構(gòu)程序設(shè)計實(shí)例詳解

    這篇文章主要介紹了Java分支結(jié)構(gòu)程序設(shè)計例題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 使用MultipartFile來上傳單個及多個文件代碼示例

    使用MultipartFile來上傳單個及多個文件代碼示例

    這篇文章主要介紹了使用MultipartFile來上傳單個及多個文件代碼示例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 使用Mybatis遇到的坑之Integer類型參數(shù)的解讀

    使用Mybatis遇到的坑之Integer類型參數(shù)的解讀

    這篇文章主要介紹了使用Mybatis遇到的坑之Integer類型參數(shù)的解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 一文弄懂Mybatis中介者模式

    一文弄懂Mybatis中介者模式

    本文主要介紹了一文弄懂Mybatis中介者模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • java使用靜態(tài)關(guān)鍵字實(shí)現(xiàn)單例模式

    java使用靜態(tài)關(guān)鍵字實(shí)現(xiàn)單例模式

    這篇文章主要為大家詳細(xì)介紹了java使用靜態(tài)關(guān)鍵字實(shí)現(xiàn)單例模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Java將文件分割為多個子文件再將子文件合并成原始文件的示例

    Java將文件分割為多個子文件再將子文件合并成原始文件的示例

    本篇文章主要介紹了Java將文件分割為多個子文件再將子文件合并成原始文件的示例,具有一定的參考價值,有興趣的可以了解一下。
    2017-02-02
  • Springboot?RestTemplate設(shè)置超時時間的簡單方法

    Springboot?RestTemplate設(shè)置超時時間的簡單方法

    學(xué)習(xí)springboot ,RestTemplate的使用場景非常非常多,比如springcloud中的服務(wù)消費(fèi),下面這篇文章主要給大家介紹了關(guān)于Springboot?RestTemplate設(shè)置超時時間的簡單方法,需要的朋友可以參考下
    2022-01-01

最新評論