mybatis一直加载xml,找到错误的解决方案
作者:hwsdau 时间:2022-08-12 14:55:26
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
标签:mybatis,加载,xml
0
投稿
猜你喜欢
Java判断字符串是否是整数或者浮点数的方法
2022-04-30 10:06:20
MyBatis-Plus自动填充功能失效导致的原因及解决
2023-05-11 13:16:08
Javacsv实现Java读写csv文件
2022-02-16 01:10:15
spring boot thymeleaf 图片上传web项目根目录操作步骤
2023-11-23 10:50:46
Java调用第三方接口示范的实现
2023-06-27 20:32:10
Spring创建bean的几种方式及使用场景
2021-06-20 14:16:35
Java常用函数式接口总结
2022-02-02 00:02:50
Java实现多任务执行助手
2023-05-17 14:15:30
Spring Boot整合Mybatis并完成CRUD操作的实现示例
2023-11-09 04:36:46
maven <repositories>标签和<pluginRepositories>标签的使用
2022-09-26 01:06:33
java发起http请求获取返回的Json对象方法
2022-06-20 04:00:00
使用itextpdf操作pdf的实例讲解
2022-11-16 00:22:43
java实现双色球抽奖算法
2023-11-28 23:51:51
SpringBoot使用protobuf格式的接口方式
2022-02-14 14:20:17
详解Android Flutter中SliverAppBar的使用教程
2023-06-23 12:11:27
JWT在OpenFeign调用中进行令牌中继详解
2023-02-07 04:19:15
Mybatis RowBounds 限制查询条数的实现代码
2022-11-18 17:26:03
spring循环注入异常问题的解决方案
2021-06-29 02:21:18
SpringBoot中Jackson日期格式化技巧分享
2022-05-21 01:40:24
Java中的ArrayList容量及扩容方式
2023-10-17 17:24:40