Javadoc to SqlSessionDaoSupport
class 说:
...@Autowired 在 1.2.0 版中已从 setSqlSessionTemplate 和 setSqlSessionFactory 中删除。
为什么? 在这种情况下,我必须手动将 sqlSessionFactory 设置为我的 daos 并测试类(我使用 dbUnit 进行持久性测试)
@Autowired
根据这个问题被删除:https ://code.google.com/p/mybatis/issues/detail?id=763
作为一个通用的框架,MyBatis 不应该做出诸如“ApplicationContext 中只有一个 sqlSessionFactory”之类的强断言,这就是为什么@Autowired
被移除的原因。
作为一种解决方法,您可以编写自己的MyAppSqlSessionDaoSupport
extends并SqlSessionDaoSupport
覆盖setSqlSessionFactory(...)
@Autowired
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
if (!this.externalSqlSession) {
this.sqlSession = new SqlSessionTemplate(sqlSessionFactory);
}
}
然后,让你的 DAO 扩展MyAppSqlSessionDaoSupport
而不是SqlSessionDaoSupport
.