app开发者平台在数字化时代的重要性与发展趋势解析
650
2022-11-01
mybatis一直加载xml,找到错误的解决方案
目录mybatis一直加载xml,找到错误今天终于找到了一种解决方法mybatis延迟加载(xml)在mybatis的配置文件中
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(euukbJehrnx);
return null;
}
}
这里捕获异常后,直接 return null导致异常被吞。
mybatis延迟加载(xml)
对于一对一和多对一(mybatis映射为一对一)。查询的时候一起查询即可。
但是对于一对多,和多对多。也许那个多对应的数据很多,而我们不需要那个多。那么一起查询会浪费性能资源。
所以,mybatis有懒加载。
mysql默认是立即加载。
懒加载在Collection或者association属性中有一个fetchType属性,eager立即加载。lazy懒加载。
在mybatis的配置文件中
即可。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~