欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

mybatis一直加载xml,找到错误的解决方案

时间:2022-10-31 10:18:41|栏目:JAVA代码|点击:

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>

即可。 

上一篇:SpringBoot2.x设置Session失效时间及失效跳转方式

栏    目:JAVA代码

下一篇:没有了

本文标题:mybatis一直加载xml,找到错误的解决方案

本文地址:http://www.codeinn.net/misctech/217840.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有