3

Javadoc to SqlSessionDaoSupportclass 说:

...@Autowired 在 1.2.0 版中已从 setSqlSessionTemplate 和 setSqlSessionFactory 中删除。

为什么? 在这种情况下,我必须手动将 sqlSessionFactory 设置为我的 daos 并测试类(我使用 dbUnit 进行持久性测试)

4

1 回答 1

4

@Autowired根据这个问题被删除:https ://code.google.com/p/mybatis/issues/detail?id=763

作为一个通用的框架,MyBatis 不应该做出诸如“ApplicationContext 中只有一个 sqlSessionFactory”之类的强断言,这就是为什么@Autowired被移除的原因。

作为一种解决方法,您可以编写自己的MyAppSqlSessionDaoSupportextends并SqlSessionDaoSupport覆盖setSqlSessionFactory(...)

@Autowired
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
  if (!this.externalSqlSession) {
    this.sqlSession = new SqlSessionTemplate(sqlSessionFactory);
  }
}

然后,让你的 DAO 扩展MyAppSqlSessionDaoSupport而不是SqlSessionDaoSupport.

于 2013-07-05T21:10:37.603 回答