Spring和Mybatis整合過程中遇到的Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required的異常

Dao層繼承了SqlSessionDaoSupport,該類會自動注入SQLSessionFectory,我們只要使用this.getSqlSession()就可以拿到SqlSession。

但是如果使用的是"mybatis-spring-1.0.0-RC3.jar"這個版本是沒有問題的。但是高版本就會有問題,原因是Mybatis3依賴的jar包"mybatis-spring-1.2.0.jar"這個版本以及以上的版本中,對SqlSessionDaoSupport類中的'sqlSessionFactory'或'sqlSessionTemplate'注入方式進行了調整。

可能是爲了解決多數據源的問題吧,取消了自動注入。

解決辦法:創建一個Dao的基類CommonDao,讓這個基類繼承SqlSessionDaoSupport,並通過set方法注入SqlSessionFactory屬性即可:

複製代碼
/**
 * Created by SYJ on 2017/4/16.
 */
public class CommonDao extends SqlSessionDaoSupport {
    @Resource
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){
        super.setSqlSessionFactory(sqlSessionFactory);
    }
}
複製代碼

然後讓Dao實現類再繼承這個CommonDao基類即可:

@Repository
public class PersonDaoImpl extends CommonDao implements PersonDao {
  //此處省略...  
}

重新啓動web項目,問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章