SqlSessionDaoSupport与SqlSessionTemplate对比
SqlSession(SqlSessionDaoSupport类)
SqlSessionDaoSupport
SqlSessionDaoSupport是一个抽象的支持类,用来为你提供SqlSession。调用getSqlSession()方法你会得到一个SqlSessionTemplate,这然后可以用于执行SQL方法,就像下面这样:
- publicclassUserDaoImplextendsSqlSessionDaoSupportimplementsUserDao{
- publicUsergetUser(StringuserId){
- return(User)getSqlSession().selectOne
- ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId);
- }
- }
通 常MapperFactoryBean是这个类的首选,因为它不需要额外的代码。但是,如果你需要在DAO中做其它非MyBatis的工作或需要具体的 类,那么这个类就是很有用了。SqlSessionDaoSupport需要一个sqlSessionFactory或 sqlSessionTemplate属性来设置。这些被明确地设置或由Spring来自动装配。如果两者都被设置了,那么 sqlSessionFactory是被忽略的。
假设类UserMapperImpl是SqlSessionDaoSupport的子类,它可以在Spring中进行如下的配置:
- <beanid="userMapper"class="org.mybatis.spring.sample.mapper.UserMapperImpl">
- <propertyname="sqlSessionFactory"ref="sqlSessionFactory"/>
- </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作为构造方法的参数来创建。
- <beanid="sqlSession"class="org.mybatis.spring.SqlSessionTemplate">
- <constructor-argindex="0"ref="sqlSessionFactory"/>
- </bean>
这个bean现在可以直接注入到DAO bean中。你需要在bean中添加一个SqlSession属性,就像下面的代码:
- publicclassUserDaoImplimplementsUserDao{
- privateSqlSessionsqlSession;
- publicvoidsetSqlSession(SqlSessionsqlSession){
- this.sqlSession=sqlSession;
- }
- publicUsergetuser(StringuserId){
- return(User)sqlSession.selectOne
- ("org.mybatis.spring.sample.mapper.UserMapper.getUser",userId);
- }
- }
如下注入SqlSessionTemplate:
- <beanid="userDao"class="org.mybatis.spring.sample.dao.UserDaoImpl">
- <propertyname="sqlSession"ref="sqlSession"/>
- </bean>
相关推荐
网上有许多关于SpringMVC与Mybatis整合的实例,但是由于Mybaits-spring有好几种配置方式(SqlSessionDaoSupport方式,mapperFactoryBean方式,mapperScannerConfigurer方式),这样看起来会觉得很乱,不知道哪个是对的...
第二种方式则更进一步,MyBatis-Spring库提供了一些额外的辅助类,如SqlSessionDaoSupport和SqlSessionTemplate,它们简化了MyBatis在Spring环境中的使用,避免了手动关闭SqlSession。 在SSM项目中,我们需要配置...
MapperFactoryBean 继承了 SqlSessionDaoSupport,也就是动态切换 SqlSessionFactory 的第一种方法,我们需要重写和实现 SqlSessionDaoSupport 方法,或者是继承 MapperFactoryBean 来重写覆盖相关方法。 如果利用 ...
以上介绍了Spring与Mybatis的三种常用整合方法:使用MapperFactoryBean、SqlSessionTemplate以及SqlSessionDaoSupport。每种方法都有其特点和适用场景,开发者可以根据项目的具体需求选择合适的整合方式。对于简单的...
本文将深入探讨使用MyBatis进行数据处理的四种主要方式:SqlSessionTemplate、SqlSessionDaoSupport、MapperFactoryBean以及MapperScannerConfigurer。这四种方式各有特点,适用于不同的场景和需求。 ### ...
在DAO实现类中,可以直接继承`SqlSessionDaoSupport`,然后重写`getSqlSessionTemplate()`方法以返回`SqlSessionTemplate`。 - 配置步骤与第二种方式相似,需要创建`SqlSessionFactory`和`SqlSessionTemplate`。 ...
- 在 DAO 类中继承 SqlSessionDaoSupport 或使用 SqlSessionTemplate。 - 使用 @Autowired 注解注入所需的 Mapper 对象。 8. **测试**:整合完成后,可以通过 JUnit 或其他测试工具编写测试用例,验证数据库操作...
同时,配置SqlSessionTemplate或SqlSessionDaoSupport以供业务层使用。 4. **编写Mapper接口和XML文件**:定义Mapper接口,每个方法对应一个SQL查询。然后创建对应的XML文件,编写SQL语句和结果映射。 5. **Spring...
7. **DAO 层实现**:在整合后,可以创建基于 iBATIS 的 DAO 类,这些类继承自 SqlSessionDaoSupport 或使用 SqlSessionTemplate,通过这些工具类与数据库进行交互。 8. **Service 层设计**:在 Service 层,我们...
3. **MyBatis-Spring集成**:MyBatis-Spring是一个连接MyBatis和Spring的桥梁,它提供了SqlSessionTemplate和SqlSessionDaoSupport两种方式来实现MyBatis与Spring的集成。SqlSessionTemplate是线程安全的,可以直接...
4. **SqlSessionTemplate与SqlSessionDaoSupport**: SqlSessionTemplate是线程安全的,可以直接执行SQL操作,而SqlSessionDaoSupport是Spring的一个支持类,提供了一些基本的SqlSession操作,方便DAO层的开发。...
接下来,配置Spring的`applicationContext.xml`,声明bean并建立Mapper接口与SqlSessionTemplate或SqlSessionDaoSupport的关联。SqlSessionTemplate是一个线程安全的模板类,用于执行SQL操作,而...
4. 使用 SqlSessionTemplate 或 SqlSessionDaoSupport:在 Service 层,可以通过依赖注入获取 SqlSessionTemplate 或继承 SqlSessionDaoSupport 来进行数据库操作。 5. 配置事务管理:利用 Spring 的 ...
3. **SqlSessionTemplate与SqlSessionDaoSupport**: Spring提供了SqlSessionTemplate和SqlSessionDaoSupport两个类,它们是Mybatis与Spring交互的桥梁。SqlSessionTemplate是线程安全的,可以直接在业务逻辑中使用,...
而MyBatis-Spring通过提供SqlSessionTemplate和SqlSessionDaoSupport等工具类,使得MyBatis可以透明地与Spring的IoC容器和AOP事务管理相结合,减轻了开发负担。 1. SqlSessionTemplate:它是MyBatis-Spring的核心...
接下来,我们创建Service层,通常会注入SqlSessionTemplate或SqlSessionDaoSupport,这些类可以帮助我们执行myBatis的CRUD操作。例如: ```java @Service public class UserService { @Autowired private ...
总结,Java的MyBatis+Spring框架结合使用DAO模式,通过SqlSessionTemplate和SqlSessionDaoSupport,为数据库操作提供了高效且健壮的解决方案。它们简化了DAO的实现,支持Spring事务管理,并允许灵活的配置,从而提高...
这个依赖包集还包含了其他可能的开发工具包,如MyBatis-Spring,它提供了更便捷的Spring与MyBatis整合方式,例如MapperScannerConfigurer自动扫描并注册Mapper接口,以及SqlSessionTemplate和SqlSessionDaoSupport等...
- **SqlSessionTemplate**或**SqlSessionDaoSupport**:这两者都是执行SQL的工具,SqlSessionTemplate适合于无事务控制的场景,SqlSessionDaoSupport适用于需要事务管理的情况。 - **@Autowired**:Spring通过@...
5. **SqlSessionDaoSupport注入**:使用`SqlSessionDaoSupport`或`SqlSessionTemplate`可以帮助Spring管理SqlSession,避免手动处理提交、回滚和关闭操作。如果自定义实现类,需要自己负责Session的生命周期管理。 ...