MyBatis防止死循环

mybatis的mapper文件中如果存在错误,会导致项目启动时加载mapper进入死循环,却不输出错误

重新buildSqlSessionFactory()

  1. 重写org.mybatis.spring.SqlSessionFactoryBeanbuildSqlSessionFactory()方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class FixedSqlSessionFactory extends SqlSessionFactoryBean {

    @Override
    protected SqlSessionFactory buildSqlSessionFactory() throws IOException {
        try {
            return super.buildSqlSessionFactory();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            ErrorContext.instance().reset();
        }
        return null;
    }

}

修改配置文件中的引用为上述包装类

1
2
3
4
<bean id="sqlSessionFactory" class="com.innovaee.hts.sop.web.FixedSqlSessionFactory">
    <property name="dataSource" ref="dataSource"/>
    ...
</bean>

启动项目,则会在控制台输出具体错误信息