`

SqlSessionDaoSupport与SqlSessionTemplate对比

阅读更多

 

 

SqlSession(SqlSessionDaoSupport类) 

SqlSessionDaoSupport

SqlSessionDaoSupport是一个抽象的支持类,用来为你提供SqlSession。调用getSqlSession()方法你会得到一个SqlSessionTemplate,这然后可以用于执行SQL方法,就像下面这样:

Java代码  收藏代码
  1. public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{  
  2.     public User getUser(String userId){  
  3.         return (User)getSqlSession().selectOne  
  4.             ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId);  
  5.     }  
  6. }  

通常MapperFactoryBean是这个类的首选,因为它不需要额外的代码。但是,如果你需要在DAO中做其它非MyBatis的工作或需要具体的类,那么这个类就是很有用了。SqlSessionDaoSupport需要一个sqlSessionFactory或sqlSessionTemplate属性来设置。这些被明确地设置或由Spring来自动装配。如果两者都被设置了,那么sqlSessionFactory是被忽略的。

假设类UserMapperImpl是SqlSessionDaoSupport的子类,它可以在Spring中进行如下的配置: 

Java代码  收藏代码
  1. <bean id="userMapper" class="org.mybatis.spring.sample.mapper.UserMapperImpl">  
  2.     <property name="sqlSessionFactory" ref="sqlSessionFactory"/>  
  3. </bean>  

 

 SqlSessionTemplate

SqlSessionTemplate是MyBatis-Spring的核心。这个类负责管理MyBatis的SqlSession,调用MyBatis的SQL方法,翻译异常。SqlSessionTemplate是线程安全的,可以被多个DAO所共享使用。

当调用SQL方法时,包含从映射器getMapper()方法返回的方法,SqlSessionTemplate将会保证使用的SqlSession是和当前Spring的事务相关的。此外,它管理session的生命周期,包含必要的关闭,提交或回滚操作。

SqlSessionTemplate实现了SqlSession,这就是说要对MyBatis的SqlSession进行简易替换。

SqlSessionTemplate通常是被用来替代默认的MyBatis实现的DefaultSqlSession,因为它不能参与到Spring的事务中也不能被注入,因为它是线程不安全的。相同应用程序中两个类之间的转换可能会引起数据一致性的问题。

SqlSessionTemplate对象可以使用SqlSessionFactory作为构造方法的参数来创建。

Xml代码  收藏代码
  1. <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">  
  2.     <constructor-arg index="0" ref="sqlSessionFactory"/>  
  3. </bean>  

这个bean现在可以直接注入到DAO bean中。你需要在bean中添加一个SqlSession属性,就像下面的代码:

Java代码  收藏代码
  1. public class UserDaoImpl implements UserDao{  
  2.     private SqlSession sqlSession;  
  3.     public void setSqlSession(SqlSession sqlSession){  
  4.         this.sqlSession = sqlSession;  
  5.     }  
  6.     public User getuser(String userId){  
  7.         return (User)sqlSession.selectOne  
  8.         ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId);  
  9.     }  
  10. }  

如下注入SqlSessionTemplate:

Xml代码  收藏代码
  1. <bean id="userDao" class="org.mybatis.spring.sample.dao.UserDaoImpl">  
  2.     <property name="sqlSession" ref="sqlSession"/>  
  3. </bean>  
分享到:
评论

相关推荐

    javaWeb项目SpringMVC3.2.1与Mybatis3.0.4整合实例之一SqlSessionDaoSupport方式

    网上有许多关于SpringMVC与Mybatis整合的实例,但是由于Mybaits-spring有好几种配置方式(SqlSessionDaoSupport方式,mapperFactoryBean方式,mapperScannerConfigurer方式),这样看起来会觉得很乱,不知道哪个是对的...

    mybatis和spring的整合包(完整版).rar

    第二种方式则更进一步,MyBatis-Spring库提供了一些额外的辅助类,如SqlSessionDaoSupport和SqlSessionTemplate,它们简化了MyBatis在Spring环境中的使用,避免了手动关闭SqlSession。 在SSM项目中,我们需要配置...

    Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程

    MapperFactoryBean 继承了 SqlSessionDaoSupport,也就是动态切换 SqlSessionFactory 的第一种方法,我们需要重写和实现 SqlSessionDaoSupport 方法,或者是继承 MapperFactoryBean 来重写覆盖相关方法。 如果利用 ...

    Spring与Mybatis三种常用整合方法

    以上介绍了Spring与Mybatis的三种常用整合方法:使用MapperFactoryBean、SqlSessionTemplate以及SqlSessionDaoSupport。每种方法都有其特点和适用场景,开发者可以根据项目的具体需求选择合适的整合方式。对于简单的...

    使用mybatis进行数据处理的四种方式

    本文将深入探讨使用MyBatis进行数据处理的四种主要方式:SqlSessionTemplate、SqlSessionDaoSupport、MapperFactoryBean以及MapperScannerConfigurer。这四种方式各有特点,适用于不同的场景和需求。 ### ...

    spring与mybatis三种整合方法

    在DAO实现类中,可以直接继承`SqlSessionDaoSupport`,然后重写`getSqlSessionTemplate()`方法以返回`SqlSessionTemplate`。 - 配置步骤与第二种方式相似,需要创建`SqlSessionFactory`和`SqlSessionTemplate`。 ...

    mybatis_spring.zip_mybatis整合spring的包

    - 在 DAO 类中继承 SqlSessionDaoSupport 或使用 SqlSessionTemplate。 - 使用 @Autowired 注解注入所需的 Mapper 对象。 8. **测试**:整合完成后,可以通过 JUnit 或其他测试工具编写测试用例,验证数据库操作...

    ibatis与spring整合实例(附源码)

    同时,配置SqlSessionTemplate或SqlSessionDaoSupport以供业务层使用。 4. **编写Mapper接口和XML文件**:定义Mapper接口,每个方法对应一个SQL查询。然后创建对应的XML文件,编写SQL语句和结果映射。 5. **Spring...

    spring与ibatis整合集成实例

    7. **DAO 层实现**:在整合后,可以创建基于 iBATIS 的 DAO 类,这些类继承自 SqlSessionDaoSupport 或使用 SqlSessionTemplate,通过这些工具类与数据库进行交互。 8. **Service 层设计**:在 Service 层,我们...

    mybatis整合springMvc完整jar包.rar

    3. **MyBatis-Spring集成**:MyBatis-Spring是一个连接MyBatis和Spring的桥梁,它提供了SqlSessionTemplate和SqlSessionDaoSupport两种方式来实现MyBatis与Spring的集成。SqlSessionTemplate是线程安全的,可以直接...

    mybatis-spring整合框架,mysql数据库

    4. **SqlSessionTemplate与SqlSessionDaoSupport**: SqlSessionTemplate是线程安全的,可以直接执行SQL操作,而SqlSessionDaoSupport是Spring的一个支持类,提供了一些基本的SqlSession操作,方便DAO层的开发。...

    spring整合myBatis

    接下来,配置Spring的`applicationContext.xml`,声明bean并建立Mapper接口与SqlSessionTemplate或SqlSessionDaoSupport的关联。SqlSessionTemplate是一个线程安全的模板类,用于执行SQL操作,而...

    mybatis-spring-zh.rar

    4. 使用 SqlSessionTemplate 或 SqlSessionDaoSupport:在 Service 层,可以通过依赖注入获取 SqlSessionTemplate 或继承 SqlSessionDaoSupport 来进行数据库操作。 5. 配置事务管理:利用 Spring 的 ...

    spring3.2.2+mybatis3.1-lib

    3. **SqlSessionTemplate与SqlSessionDaoSupport**: Spring提供了SqlSessionTemplate和SqlSessionDaoSupport两个类,它们是Mybatis与Spring交互的桥梁。SqlSessionTemplate是线程安全的,可以直接在业务逻辑中使用,...

    mybaits-spring(ibatis-spring)-1.0.2-bundle

    而MyBatis-Spring通过提供SqlSessionTemplate和SqlSessionDaoSupport等工具类,使得MyBatis可以透明地与Spring的IoC容器和AOP事务管理相结合,减轻了开发负担。 1. SqlSessionTemplate:它是MyBatis-Spring的核心...

    myBatis系列之六:与SpringMVC集成

    接下来,我们创建Service层,通常会注入SqlSessionTemplate或SqlSessionDaoSupport,这些类可以帮助我们执行myBatis的CRUD操作。例如: ```java @Service public class UserService { @Autowired private ...

    Java的MyBatis+Spring框架中使用数据访问对象DAO模式的方法

    总结,Java的MyBatis+Spring框架结合使用DAO模式,通过SqlSessionTemplate和SqlSessionDaoSupport,为数据库操作提供了高效且健壮的解决方案。它们简化了DAO的实现,支持Spring事务管理,并允许灵活的配置,从而提高...

    mybatis与spring整合依赖包集

    这个依赖包集还包含了其他可能的开发工具包,如MyBatis-Spring,它提供了更便捷的Spring与MyBatis整合方式,例如MapperScannerConfigurer自动扫描并注册Mapper接口,以及SqlSessionTemplate和SqlSessionDaoSupport等...

    spring整合mybatis

    - **SqlSessionTemplate**或**SqlSessionDaoSupport**:这两者都是执行SQL的工具,SqlSessionTemplate适合于无事务控制的场景,SqlSessionDaoSupport适用于需要事务管理的情况。 - **@Autowired**:Spring通过@...

    完整版 Java开发实训课程系列-MyBatis框架技术 04.MyBatis与Spring整合开发(共21页).pptx

    5. **SqlSessionDaoSupport注入**:使用`SqlSessionDaoSupport`或`SqlSessionTemplate`可以帮助Spring管理SqlSession,避免手动处理提交、回滚和关闭操作。如果自定义实现类,需要自己负责Session的生命周期管理。 ...

Global site tag (gtag.js) - Google Analytics