mybatis一直加载xml,找到错误的解决方案
作者:hwsdau 发布时间:2022-08-12 14:55:26
标签: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文件出错的时候,会有异常信息输出。
还有一个问题,为什么出错后只能看到无限输出的一行日志,而看不到这里具体的异常信息呢?
通过追踪代码,发现在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导致异常被吞。
mybatis延迟加载(xml)
对于一对一和多对一(mybatis映射为一对一)。查询的时候一起查询即可。
但是对于一对多,和多对多。也许那个多对应的数据很多,而我们不需要那个多。那么一起查询会浪费性能资源。
所以,mybatis有懒加载。
mysql默认是立即加载。
懒加载在Collection或者association属性中有一个fetchType属性,eager立即加载。lazy懒加载。
在mybatis的配置文件中
<settings>
<!--延迟加载总开关-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--侵入式延迟加载开关-->
<!--3.4.1版本之前默认是true,之后默认是false-->
<setting name="aggressiveLazyLoading" value="false"/>
<!--如果不写这个,可能有问题-->
<setting name="lazyLoadTriggerMethods" value=""/>
</settings>
即可。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://blog.csdn.net/hwsdau/article/details/79065834


猜你喜欢
- C#中的泛型和反射经常是一起工作的,因此这里就一次性的加以介绍了。由于c#是强类型语言,一般来说函数的返回类型和参数的类型都是一早写好的,这
- 这篇文章主要介绍了SpringBoot项目没有把依赖的jar包一起打包的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- 目录一 、EasyExcel简介二、常用注解三、依赖四、监听五、接口导入Excel六、接口 导出Excel (HttpServletResp
- ConstantConstant 和 ConstantPool 是用于表示常量的一种机制。Constant 接口定义了常量的基本属性和方法,
- Mapper类中存在名称相同的方法重载报错项目场景官网项目开发问题描述Mapper类中存在名称相同的方法重载报错为了省事,直接在mapper
- 效果图:为了使图片浏览器左右无限循环滑动 我们要自定义gallery的adapter如果要想自定义adapter首先要了解这几个方法@Ove
- 起因曾经用过西门子出的 * , 好处是直接有SDK开发包, 不会硬件开发也能直接使用缺点也是明显的, 就是只支持Windows系统, 另外就
- 前言:根据ThreadPoolExecutor的构造方法,JDK提供了很多工厂方法来创建各种用途的线程池.1 newFixedThreadP
- 混淆studio 使用Proguard进行混淆,其是一个压缩、优化和混淆java字节码文件的一个工具。功能:Shrinking(压缩)、Op
- equals函数在基类object中已经定义,源码如下 public boolean equals(Object obj) { return
- 长久以来统领javaee领域的脚手架以spring struts2 mybatis/hib
- 范例说明Android的Widget,有许多是为了与User交互而特别设计的,但也有部分是作为程序提示、显示程序运行状态的Widget。现在
- 1、引言你能搜到这个教程,说明你对 Maven 感兴趣,但是又不是太理解。那么接下来这个系列的教程将会详细讲解 Maven 的用法,相信你看
- 在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘Java输入/输
- 对于一些普通的文件下载,想必大家都会去点击默认的链接进行资料获取。效率慢是一个方面,有时候下载的过程并不顺序。在学习了python中的一些程
- LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,LRU缓存就是使用这种原理实现,简单的说就是缓存一定量
- 前言app启动后的白屏问题,默认都是在splash页面加主题配置,主题配置一个背景来达到用户点击app图标就立马启动app的假象,大多情况下
- 前言在 Java 中,跳转的实现方式有两种:请求转发和请求重定向,但二者是完全不同的,所以我们今天就来盘它。请求转发和请求重定向主要区别,包
- 本文实例讲述了Java集合定义与用法。分享给大家供大家参考,具体如下:java集合大体可分为三类,分别是Set、List和Map,它们都继承
- 通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成:Socket编程:实现PC和Emulato