mybatis一直加載xml,找到錯誤的解決方案
mybatis一直加載xml,找到錯誤
我們在寫springmvc+mybatis項目,啟動項目的時候,mapper配置文件一直刷,一直加載。。。。。
對于我們偉大的程序猿來說這并不可怕,可怕的是沒有錯誤打印出來。。。。。完全不知道如何下手啊,
今天終于找到了一種解決方法
找到org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory 類,在下面方法:
?? ?protected void autowireByType( ?? ??? ??? ?String beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs) { ?? ??? ??? ?catch (BeansException ex) { ?? ??? ??? ??? ?throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, propertyName, ex); ?? ??? ??? ?}
在throw這一行斷點即可,這個地方是最早捕獲異常的地方,當Mapper.xml文件出錯的時候,會有異常信息輸出。
還有一個問題,為什么出錯后只能看到無限輸出的一行日志,而看不到這里具體的異常信息呢?
通過追蹤代碼,發(fā)現(xiàn)在org.springframework.beans.factory.support.AbstractBeanFactory類中的方法:
protected Class<?> getTypeForFactoryBean(String beanName, RootBeanDefinition mbd) { ? ? if (!mbd.isSingleton()) { ? ? ? ? return null; ? ? } ? ? try { ? ? ? ? FactoryBean<?> factoryBean = doGetBean(FACTORY_BEAN_PREFIX + beanName, FactoryBean.class, null, true); ? ? ? ? return getTypeForFactoryBean(factoryBean); ? ? } ? ? catch (BeanCreationException ex) { ? ? ? ? // Can only happen when getting a FactoryBean. ? ? ? ? if (logger.isDebugEnabled()) { ? ? ? ? ? ? logger.debug("Ignoring bean creation exception on FactoryBean type check: " + ex); ? ? ? ? } ? ? ? ? onSuppressedException(ex); ? ? ? ? return null; ? ? } }
這里捕獲異常后,直接 return null導(dǎo)致異常被吞。
mybatis延遲加載(xml)
對于一對一和多對一(mybatis映射為一對一)。查詢的時候一起查詢即可。
但是對于一對多,和多對多。也許那個多對應(yīng)的數(shù)據(jù)很多,而我們不需要那個多。那么一起查詢會浪費性能資源。
所以,mybatis有懶加載。
mysql默認是立即加載。
懶加載在Collection或者association屬性中有一個fetchType屬性,eager立即加載。lazy懶加載。
在mybatis的配置文件中
<settings> ? ? ? ? <!--延遲加載總開關(guān)--> ? ? ? ? <setting name="lazyLoadingEnabled" value="true"/> ? ? ? ? <!--侵入式延遲加載開關(guān)--> ? ? ? ? <!--3.4.1版本之前默認是true,之后默認是false--> ? ? ? ? <setting name="aggressiveLazyLoading" value="false"/> ?<!--如果不寫這個,可能有問題--> ? ? ? ? <setting name="lazyLoadTriggerMethods" value=""/> ? ? </settings>
即可。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot2.0 @ConfigurationProperties使用詳解
這篇文章主要介紹了Spring Boot2.0 @ConfigurationProperties使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11Spring Cloud動態(tài)配置刷新RefreshScope使用示例詳解
這篇文章主要為大家介紹了Spring Cloud動態(tài)配置刷新RefreshScope使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08JPA之EntityManager踩坑及解決:更改PersistenceContext
這篇文章主要介紹了JPA之EntityManager踩坑及解決:更改PersistenceContext方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Kotlin + Retrofit + RxJava簡單封裝使用詳解
這篇文章主要介紹了Kotlin + Retrofit + RxJava簡單封裝使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07ruoyi-springboot框架新增模塊調(diào)接口報404的解決方案
這篇文章主要介紹了ruoyi-springboot框架新增模塊調(diào)接口報404的解決方案,文中通過代碼示例給大家講解的非常詳細,對大家的學(xué)習或工作有一定的幫助,需要的朋友可以參考下2024-03-03