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;
}
mybatis初始化后主要干什么事情?为什么要创建sqlsessionfactory?这和sqlsessiondaosupport有什么关系?
mybatis框架初始化是对加载读取xml配置文件的过程
sqlmapconfig.xml中
configuration 配置
× properties 属性
× settings 设置
× typeAliases 类型命名
× typeHandlers 类型处理器
× objectFactory 对象工厂
× plugins 插件
× environments 环境
× environment 环境变量
× transactionManager 事务管理器
× dataSource 数据源
是对其一层层加载到内存中,org.apache.ibatis.session.Configuration 这个对象作为承载这些信息的容器,configuration对象和xml的结构基本相同,mybatis初始化就是创建configuration对象过程
MyBatis的初始化可以有两种方式:
- 基于XML配置文件:基于XML配置文件的方式是将MyBatis的所有配置信息放在XML文件中,MyBatis通过加载并XML配置文件,将配置文信息组装成内部的Configuration对象,就是上面所说
- 基于Java API:这种方式不使用XML配置文件,需要MyBatis使用者在Java代码中,手动创建Configuration对象,然后将配置参数set 进入Configuration对象中
- String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//手动创建XMLConfigBuilder,并解析创建Configuration对象
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, null,null);
Configuration configuration=parse();
//使用Configuration对象创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
//使用MyBatis
SqlSession sqlSession = sqlSessionFactory.openSession();
List list = sqlSession.selectList("com.foo.bean.BlogMapper.queryAllBlogInfo");
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
List list = sqlSession.selectList("com.foo.bean.BlogMapper.queryAllBlogInfo");
new sqlsessionfactorybuilder().build(inputstream)初始化mybatis过程:根据输入流加载xml文件生成一个configuration对象,然后利用configuration对象生成sqlsessionfactory过程
涉及到的设计模式
1SqlSessionFactory的创建
2数据库连接环境Environment对象的创建
mybatis-spring-1.2.0 以来, SqlSessionDaoSupport 的 setSqlSessionTemplate 和 setSqlSessionFactory 两个方法上的 @Autowired 注解被删除,这就意味着继承于 SqlSessionDaoSupport 的 DAO 类.
比较好的解决办法是在我们的 DAO 类中覆盖这两个方法之一,并加上 @Autowired 注解。那么如果在每个 DAO 类中都这么做的话,显然很低效。更优雅的做法是,写一个继承于 SqlSessionDaoSupport 的 BaseDao,在 BaseDao 中完成这个工作,然后其他的 DAO 类再都从 BaseDao 继承。
可以手动集成sqlsessiondaosupport来创建sqlsession,如果在集成spring中,则MapperFactoryBean对象在向spring注入sqlsessionfactory会创建sqlsession对象,因为mapperfactorybean父类就是sqlsessionfdaosupport
https://www.cnblogs.com/wangmingshun/p/5674633.html
转载于:https://my.oschina.net/u/3043570/blog/2208682
分享到:
相关推荐
Mybatis-Spring是一个将流行的Mybatis持久层框架与Spring框架集成的库,它使得在Spring应用中使用Mybatis变得更加方便。这个1.2.2版本的中文文档为开发者提供了详细的指南,帮助理解如何有效地整合这两个强大的框架...
(3)配置Spring:在Spring的配置文件中,声明SqlSessionFactoryBean,并通过mybatis-spring的SqlSessionTemplate或SqlSessionDaoSupport来创建Mapper接口的代理。 (4)注入Mapper:在需要使用Mapper的Spring Bean...
3. **简化SqlSession管理**:通过使用SqlSessionTemplate和SqlSessionDaoSupport,开发者无需手动管理SqlSession的创建、关闭和提交,降低了出错的可能性。 4. **MapperFactoryBean**:这是一个关键的Spring Bean,...
7. **DAO 层的简化**:MyBatis-Spring 提供的 SqlSessionTemplate 和 SqlSessionDaoSupport 两个抽象基类,可以作为 DAO 类的基类,简化了 DAO 的编写工作。 在 mybatis-spring-1.2.0 目录下,通常包含以下内容: ...
- SqlSessionTemplate 和 SqlSessionDaoSupport 是两个关键类,它们提供了对Mybatis的SqlSession的操作封装,使得在Spring环境中调用Mybatis的CRUD操作变得简单。 6. **Mapper接口和XML配置**: - Mybatis-Spring...
MyBatis-Spring 1.2.0 是一个整合了 MyBatis 和 Spring 框架的库,它使得在 Spring 应用中使用 MyBatis 更加方便和无缝。这个压缩包文件"mybatis-spring-1.2.0.rar"包含了实现这一整合所需的全部资源,包括库文件、...
MyBatis-Spring 是一个将 MyBatis ORM 框架与 Spring 框架集成的库,版本 1.2.2 提供了稳定且兼容的整合功能。这个库使得在 Spring 应用中使用 MyBatis 更加便捷,通过简化配置和提供自动化事务管理,提高了开发效率...
5. **SqlSessionTemplate**和**SqlSessionDaoSupport**:这两个类是MyBatis-Spring提供的,SqlSessionTemplate是一个线程安全的SqlSession实现,可以直接在业务逻辑中使用;SqlSessionDaoSupport则是一个抽象基类,...
这个jar包提供了一些关键组件,如SqlSessionTemplate和SqlSessionDaoSupport,它们是Spring的模板模式实现,可以帮助开发者在Spring环境下方便地使用MyBatis。此外,它还提供了MapperScannerConfigurer,可以自动...
这个库提供了如SqlSessionTemplate和SqlSessionDaoSupport等类,帮助简化在Spring应用中使用MyBatis的工作。 在实际应用中,开发者会根据`mapper.xml`文件定义的SQL语句,通过Mapper接口来执行数据库操作。例如,...
4. 使用 SqlSessionTemplate 或 SqlSessionDaoSupport:在 Service 层,可以通过依赖注入获取 SqlSessionTemplate 或继承 SqlSessionDaoSupport 来进行数据库操作。 5. 配置事务管理:利用 Spring 的 ...
5. **Spring 管理的 SqlSession**:通过 SqlSessionTemplate 和 SqlSessionDaoSupport,开发者可以在 Spring 环境下使用 MyBatis,这两个类都封装了 SqlSession 的生命周期,确保了在 Spring 事务中正确关闭 ...
4. **使用MyBatis-Spring的SqlSessionTemplate或SqlSessionDaoSupport**:这两个类可以帮助我们在Spring环境中更方便地使用SqlSession。SqlSessionTemplate是线程安全的,可以直接在业务逻辑中使用,而...
- **SqlSessionTemplate 和 SqlSessionDaoSupport:** 这两个类提供了对 SqlSession 的线程安全的封装,避免了手动管理事务和关闭 SqlSession 的问题。 - **MapperScannerConfigurer:** 自动扫描并注册 MyBatis ...
《MyBatis-Spring 1.0.3-SNAPSHOT:构建高效持久层的基石》 MyBatis-Spring 是一个轻量级的框架,它将 MyBatis 框架与 Spring 框架无缝集成,使得在 Spring 应用中使用 MyBatis 更加方便,提升了开发效率。这个名为...
2. **SqlSessionTemplate** 和 **SqlSessionDaoSupport**: 这两个类为 DAO(数据访问对象)提供了基础支持,它们是 Spring 的模板模式实现,使得在 DAO 中执行 SQL 查询变得简单。 3. **MapperFactoryBean**: 这个...
SqlSession是执行数据库操作的主要接口,MyBatis-Spring提供了两种主要方式来使用SqlSession:SqlSessionTemplate和SqlSessionDaoSupport。 ##### 5.1 SqlSessionTemplate SqlSessionTemplate是一种线程安全的...
该章节可能讲解如何在Spring环境中直接使用Mybatis的API,例如SqlSessionTemplate或SqlSessionDaoSupport,以便在业务逻辑中直接执行自定义的Mybatis操作。 ### 章节八:示例代码 这部分提供了实际的代码示例,...
同时,可以通过SqlSessionTemplate或SqlSessionDaoSupport来间接调用这些API,保持代码的整洁性。 6. **使用Spring Batch** Spring Batch是Spring提供的批处理框架,与MyBatis结合可以实现大规模数据处理。MyBatis...
MyBatis-Spring 集成是在 MyBatis 3 和 Spring 框架之间创建缺失的衔接,它减少了在使用 Spring 3.X 配置和使用 MyBatis 时所需的样板代码和冗余代码。它为 MyBatis 添加了透明的 Spring 事务支持。MyBatis-Spring ...