使用spring3.2、springmvc、mybatis3.2搭建框架时,使用了mybatis-spring-1.2.jar这个版本jar包,结果tomcat启动时始终提示如下错误:
Caused by:java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or'sqlSessionTemplate'
最终,在网上发现是mybatis3与spirng3配置文件中的一个坑。
当你使用1.2.0的jar包时候,mybatis-spring的这个基类不会再直接将spring配置文件中配好的sqlSessionFactory 或者 sqlSessionTemplate注入到这个基类中,而在使用时候,SqlSessionDaoSupport的方法
protectedvoid checkDaoConfig() {
notNull(this.sqlSession,"Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required");
}
就会抛出异常。
解决方法:
在BaseDaoImpl继承SqlSessionDaoSupport后,显示的重写setSqlSessionTemplate或setSqlSessionFactory方法。如果在application.xml中配置的是sqlSessionFactory,那么就重写setSqlSessionFactory,否则重写setSqlSessionTemplate。
public abstract class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao{
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
super.setSqlSessionTemplate(sqlSessionTemplate);
}
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory);
}
}
注:一定要加上@Autowired注解。