Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
2015-10-03 11:26
459 查看
之前一直用mybatis+mybatis-spring-1.1.1,系统升级mybatis使用后
从SqlSessionDaoSupport 这个类的源代码中能够看出,原因是
SqlSessionFactory 和
SqlSessionTemplate
1.1.1中代码片段为:
可能是为了解决多数据源的问题吧,取消了自己主动注入。
没用到多数据源,不太关心这个。
解决方式:由于我们dao层是继承于一个dao基类,所以仅仅要在这个基类中注入随意一个属性就可以。 SqlSessionFactory 在spring配置文件里已经配置。
mybatis-spring-1.2.2,
再其他配置均为改动的情况下执行出错:Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
从SqlSessionDaoSupport 这个类的源代码中能够看出,原因是
mybatis-spring-1.2.0中取消了自己主动注入
SqlSessionFactory 和
SqlSessionTemplate
/** * Convenient super class for MyBatis SqlSession data access objects. * It gives you access to the template which can then be used to execute SQL methods. * <p> * This class needs a SqlSessionTemplate or a SqlSessionFactory. * If both are set the SqlSessionFactory will be ignored. * <p> * {code Autowired} was removed from setSqlSessionTemplate and setSqlSessionFactory * in version 1.2.0. * * @see #setSqlSessionFactory * @see #setSqlSessionTemplate * @see SqlSessionTemplate * @version $Id$ */ public abstract class SqlSessionDaoSupport extends DaoSupport { private SqlSession sqlSession; private boolean externalSqlSession; public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { if (!this.externalSqlSession) { this.sqlSession = new SqlSessionTemplate(sqlSessionFactory); } } public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) { this.sqlSession = sqlSessionTemplate; this.externalSqlSession = true; } …… }
1.1.1中代码片段为:
1 public abstract class SqlSessionDaoSupport extends DaoSupport { 2 3 private SqlSession sqlSession; 4 5 private boolean externalSqlSession; 6 7 @Autowired(required = false) 8 public final void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { 9 if (!this.externalSqlSession) { 10 this.sqlSession = new SqlSessionTemplate(sqlSessionFactory); 11 } 12 } 13 14 @Autowired(required = false) 15 public final void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) { 16 this.sqlSession = sqlSessionTemplate; 17 this.externalSqlSession = true; 18 } 19 …… 20 21 }
可能是为了解决多数据源的问题吧,取消了自己主动注入。
没用到多数据源,不太关心这个。
解决方式:由于我们dao层是继承于一个dao基类,所以仅仅要在这个基类中注入随意一个属性就可以。 SqlSessionFactory 在spring配置文件里已经配置。
1 public class BaseDaoImpl extends SqlSessionDaoSupport { 2 @Resource 3 public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){ 4 super.setSqlSessionFactory(sqlSessionFactory); 5 }
相关文章推荐
- ZOJ 3349 Special Subsequence
- UVa694 - The Collatz Sequence:Time limit exceeded
- qemu guest agent安装研究
- OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)
- Repeated DNA Sequences
- HDU 1159 & POJ 1458 Common Subsequence(LCS 最长公共子序列O(nlogn))
- ucGUI学习笔记之对话框
- 128. Longest Consecutive Sequence (List, Queue)
- iOS的实时搜索:UISearchBar与UISearchController
- UI:修改模拟器类型、多线程理解
- UVALive 6432 Influence // 暴力dfs
- ZOJ 3820 Building Fire Stations
- Debian Stable (Jessie 8.1) 的normal.mod not found
- hdu 5493 Queue(线段树)
- unique_ptr
- 多个线程操作StringBuffer和StringBuilder
- 用g++ 编译 ffmpeg 编译出现 error: 'UINT64_C' was not declared in this scope 或 missing -D__STDC_CONSTANT_MACROS
- codeforces 466D Increase Sequence DP
- [LeetCode]Longest Consecutive Sequence
- String,StringBuffer与StringBuilder的区别