mybatis-spring从1.1升级到1.2所带来的dao层级的编写问题
我们可以先来看看mybatis-spring框架的1.1.1版本中关于SqlSessionDaoSupport的代码吧:
package org.mybatis.spring.support;
import static org.springframework.util.Assert.*;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.support.DaoSupport;
/**
* 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.
*
* @see #setSqlSessionFactory
* @see #setSqlSessionTemplate
* @see SqlSessionTemplate
* @version $Id: SqlSessionDaoSupport.java 4885 2012-03-12 09:58:54Z simone.tripodi $
*/
public abstract class SqlSessionDaoSupport extends DaoSupport {
private SqlSession sqlSession;
private boolean externalSqlSession;
@Autowired(required = false)
public final void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
if (!this.externalSqlSession) {
this.sqlSession = new SqlSessionTemplate(sqlSessionFactory);
}
}
@Autowired(required = false)
public final void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSession = sqlSessionTemplate;
this.externalSqlSession = true;
}
/**
* Users should use this method to get a SqlSession to call its statement methods
* This is SqlSession is managed by spring. Users should not commit/rollback/close it
* because it will be automatically done.
*
* @return Spring managed thread safe SqlSession
*/
public final SqlSession getSqlSession() {
return this.sqlSession;
}
/**
* {@inheritDoc}
*/
protected void checkDaoConfig() {
notNull(this.sqlSession, "Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required");
}
}
从上面的源码可以看出:在方法setSqlSessionFactory和setSqlSessionTemplate方法上面都标注有:“@Autowired(required = false)”这样的注解。
所以我们在编写dao层级代码的时候只需要dao直接继承SqlSessionDaoSupport,并标注注解@Repository,然后就可以使用类似的getSqlSession().selectList("User.selectUsers");
这样的方法来使用它了,而且在spring的配置文件中的配置也比较少:
<tx:annotation-driven transaction-manager="txManager"
proxy-target-class="true"/>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
但是升级到1.2之后,我们看看SqlSessionDaoSupport的源代码:
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;
}
/**
* Users should use this method to get a SqlSession to call its statement methods
* This is SqlSession is managed by spring. Users should not commit/rollback/close it
* because it will be automatically done.
*
* @return Spring managed thread safe SqlSession
*/
public SqlSession getSqlSession() {
return this.sqlSession;
}
/**
* {@inheritDoc}
*/
protected void checkDaoConfig() {
notNull(this.sqlSession, "Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required");
}
}
从上面的源码可以看出:在方法setSqlSessionFactory和setSqlSessionTemplate方法上面现在都没有标注有:“@Autowired(required = false)”这样的注解。
如果一些系统直接从mybatis-spring1.1.1升级到1.2版本的时候,就会出现问题。
在1.2版本下面有几种方式来使用:
第一种,基于注解:
@Repository
public class UserDao extends SqlSessionDaoSupport{
public List<User> userList() {
return getSqlSession().selectList("User.selectUsers");
}
@Override
@Autowired
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory);
}
}
我们自己重写set方法就可以了。在这种情况下spring的配置文件不需要修改。
第二章基于xml文件配置:
public class UserDao extends SqlSessionDaoSupport {
public List<User> userList() {
return getSqlSession().selectList("User.selectUsers");
}
}
但是需要在spring的配置文件中增加这个UserDao的配置:
<bean id="userDao" class="com.qunar.corp.paginator.dao.UserDao">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
第一种基于注解的配置,好处是不需要编写xml,但是这种比较容易侵入业务逻辑。
第二种基于xml配置,好处是不侵入业务逻辑,但是当dao的数量很多的时候,需要在xml中配置好多。
没有合适的资源?快使用搜索试试~ 我知道了~
MyBatis 之 各种依赖包
共85个文件
jar:46个
xml:11个
zip:5个
5星 · 超过95%的资源 需积分: 34 426 下载量 155 浏览量
2017-02-01
21:39:22
上传
评论 6
收藏 23.68MB ZIP 举报
温馨提示
本资源包括MyBatis框架下的各种依赖包,通过本资源,可以快速搭建MyBatis框架。
资源推荐
资源详情
资源评论
收起资源包目录
MyBatis 之 各种依赖包.zip (85个子文件)
MyBatis 之 各种依赖包
数据库表设计.pdm 48KB
2-架构图.png 18KB
3-测试数据脚本.sql 3KB
4-mybatis generator的插件
plugins
org.mybatis.generator.eclipse.ui.source_1.3.2.201207161521.jar 33KB
org.mybatis.generator.core_1.3.2.201207161521.jar 407KB
org.mybatis.generator.eclipse.doc_1.3.2.201207161521.jar 1.83MB
org.mybatis.generator.core.source_1.3.2.201207161521.jar 407KB
org.mybatis.generator.eclipse.core.source_1.3.2.201207161521.jar 18KB
org.mybatis.generator.eclipse.ui_1.3.2.201207161521.jar 36KB
org.mybatis.generator.eclipse.core_1.3.2.201207161521.jar 18KB
features
org.mybatis.generator_1.3.2.201207161521
LICENSE 11KB
NOTICE 204B
feature.xml 1KB
feature.properties 13KB
org.mybatis.generator.source_1.3.2.201207161521
LICENSE 11KB
NOTICE 204B
feature.xml 784B
feature.properties 13KB
安装说明.txt 382B
1-结构图.png 122KB
1-安装包
mybatis-3.2.2.zip 2.42MB
mybatis-3.2.2-sources.jar 375KB
mybatis-spring-1.2.0-bundle.zip 491KB
mybatis-spring-1.2.0-sources.jar 46KB
mybatis-spring从1.1升级到1.2所带来的dao层级的编写问题.txt 5KB
mybatis3.0-jar
mybatis-spring-1.0.0-RC3.jar 31KB
mybatis-3.0.3.jar 612KB
数据库表设计.pdb 48KB
2-依赖包
commons-lang3-3.1.jar 308KB
log4j-1.2.16.jar 470KB
spring-web-3.2.2.jar 611KB
spring-orm-3.2.2.jar 378KB
mysql-connector-java-5.1.10-bin.jar 707KB
asm-3.3.1.jar 43KB
mybatis-ehcache-1.0.2.jar 10KB
commons-logging-1.1.1.jar 59KB
cglib-2.2.2.jar 280KB
junit-4.9.jar 243KB
spring-beans-3.2.2.jar 593KB
spring-aop-3.2.2.jar 327KB
javassist-3.11.0.GA.jar 600KB
mybatis-spring-1.2.0.jar 48KB
freemarker-2.3.19.jar 909KB
commons-io-2.0.1.jar 156KB
slf4j-log4j12-1.6.2.jar 10KB
struts2-core-2.3.14.2.jar 778KB
ehcache-core-2.6.5.jar 1.28MB
struts2-spring-plugin-2.3.14.2.jar 21KB
slf4j-api-1.6.2.jar 25KB
commons-fileupload-1.2.2.jar 58KB
spring-jdbc-3.2.2.jar 396KB
mybatis-3.2.2.jar 683KB
spring-context-3.2.2.jar 842KB
spring-expression-3.2.2.jar 191KB
aopalliance-1.0.jar 4KB
spring-core-3.2.2.jar 846KB
spring-tx-3.2.2.jar 236KB
xwork-core-2.3.14.2.jar 622KB
ognl-3.0.6.jar 223KB
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar 1.57MB
3-常用配置文件
Order.java 942B
Order.xml 879B
ehcache.xml 13KB
beans.xml 3KB
struts.xml 1KB
sqlMapConfig.xml 996B
struts2-web.xml 899B
action-servlet.xml 666B
jdbc.properties 247B
log4j.properties 428B
自动生成插件
sqlMapGeneractor.xml 1KB
generatorConfig.properties 302B
测试数据脚本.txt 448B
mybatis-3-mapper.dtd 6KB
mybatis-3-config.dtd 2KB
mybatis-generator-core-1.3.2-bundle.zip 2.62MB
5-EHcache
MyBatis - MyBatis EHCache Reference Documentation.mht 354KB
mybatis-ehcache-1.0.2
mybatis-ehcache-1.0.2.jar 10KB
lib
ehcache-core-2.6.5
ehcache-failsafe.xml 13KB
ehcache-core-2.6.5.jar 1.28MB
slf4j-api-1.6.1.jar 25KB
LICENSE 11KB
NOTICE 205B
mybatis-ehcache-1.0.2.zip 1.32MB
mybatis-spring-1.2.1.zip 53KB
共 85 条
- 1
CG国斌
- 粉丝: 5w+
- 资源: 31
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页