springmvc與mybatis整合時 java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required 異常


今天在整合springmvc與mybatis時,啟動服務器遇到這樣一個問題,

 by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.util.Assert.notNull(Assert.java:112)

異常的意思是  缺少sqlSessionFactory 或者是  sqlSessionTemplate

我的dao層是利用繼承SqlSessionDaoSupport  然后可以直接通過this.getSqlSession() 來進行數據庫的操作。

后來通過搜索以及查看源代碼發現,mybatis-spring 1.2版本沒有自動注入sqlSessionFactory

解決方法是手動注入

1 public class BaseDaoImpl extends SqlSessionDaoSupport {
2     
3     @Autowired
4     public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){  
5             super.setSqlSessionFactory(sqlSessionFactory);  
6     }
7 }

然后在將dao實現類繼承BaseDaoImpl就可以使用了

 1 @Repository
 2 public class PersonDaoImpl extends BaseDaoImpl implements PersonDao {
 3 
 4     String ns = "cn.tx.mapper.PersonMapper.";
 5     @Override
 6     public void savePerson(Person p) {
 7         this.getSqlSession().insert(ns+"savePerson", p);
 8     }
 9 
10     @Override
11     public Person selectPersonById(Integer personId) {
12         return this.getSqlSession().selectOne(ns+"selectPersonById", personId);
13     }
14 
15     @Override
16     public void update(Person p) {
17         this.getSqlSession().update(ns + "update", p);
18     }
19 
20     @Override
21     public void delete(Integer personId) {
22         this.getSqlSession().delete(ns + "delete", personId);
23     }
24 
25     @Override
26     public List<Person> selectPersonByCondition(QueryCondition qc) {
27         return this.getSqlSession().selectList(ns + "selectPersonByCondition", qc);
28     }
29 
30 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM