`
wx1568847608
  • 浏览: 13730 次
文章分类
社区版块
存档分类
最新评论

mybatis--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;
  }

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-1.2.2中文文档.zip

    Mybatis-Spring是一个将流行的Mybatis持久层框架与Spring框架集成的库,它使得在Spring应用中使用Mybatis变得更加方便。这个1.2.2版本的中文文档为开发者提供了详细的指南,帮助理解如何有效地整合这两个强大的框架...

    mybatis-spring-1.1.1-bundle

    (3)配置Spring:在Spring的配置文件中,声明SqlSessionFactoryBean,并通过mybatis-spring的SqlSessionTemplate或SqlSessionDaoSupport来创建Mapper接口的代理。 (4)注入Mapper:在需要使用Mapper的Spring Bean...

    mybatis-spring 整合包

    3. **简化SqlSession管理**:通过使用SqlSessionTemplate和SqlSessionDaoSupport,开发者无需手动管理SqlSession的创建、关闭和提交,降低了出错的可能性。 4. **MapperFactoryBean**:这是一个关键的Spring Bean,...

    mybatis-spring-1.2.0-bundle.zip

    7. **DAO 层的简化**:MyBatis-Spring 提供的 SqlSessionTemplate 和 SqlSessionDaoSupport 两个抽象基类,可以作为 DAO 类的基类,简化了 DAO 的编写工作。 在 mybatis-spring-1.2.0 目录下,通常包含以下内容: ...

    Mybatis-Spring 1.3.2 API中文版

    - SqlSessionTemplate 和 SqlSessionDaoSupport 是两个关键类,它们提供了对Mybatis的SqlSession的操作封装,使得在Spring环境中调用Mybatis的CRUD操作变得简单。 6. **Mapper接口和XML配置**: - Mybatis-Spring...

    mybatis-spring-1.2.0.rar

    MyBatis-Spring 1.2.0 是一个整合了 MyBatis 和 Spring 框架的库,它使得在 Spring 应用中使用 MyBatis 更加方便和无缝。这个压缩包文件"mybatis-spring-1.2.0.rar"包含了实现这一整合所需的全部资源,包括库文件、...

    mybatis-spring-1.2.2

    MyBatis-Spring 是一个将 MyBatis ORM 框架与 Spring 框架集成的库,版本 1.2.2 提供了稳定且兼容的整合功能。这个库使得在 Spring 应用中使用 MyBatis 更加便捷,通过简化配置和提供自动化事务管理,提高了开发效率...

    mybatis-Spring整合jar包

    5. **SqlSessionTemplate**和**SqlSessionDaoSupport**:这两个类是MyBatis-Spring提供的,SqlSessionTemplate是一个线程安全的SqlSession实现,可以直接在业务逻辑中使用;SqlSessionDaoSupport则是一个抽象基类,...

    MyBatis和Spring整合jar:mybatis-3.2.7.jar等

    这个jar包提供了一些关键组件,如SqlSessionTemplate和SqlSessionDaoSupport,它们是Spring的模板模式实现,可以帮助开发者在Spring环境下方便地使用MyBatis。此外,它还提供了MapperScannerConfigurer,可以自动...

    mybatis-3官方zip包

    这个库提供了如SqlSessionTemplate和SqlSessionDaoSupport等类,帮助简化在Spring应用中使用MyBatis的工作。 在实际应用中,开发者会根据`mapper.xml`文件定义的SQL语句,通过Mapper接口来执行数据库操作。例如,...

    mybatis-spring-zh.rar

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

    mybatis-spring-1.1.0-bundle.zip

    5. **Spring 管理的 SqlSession**:通过 SqlSessionTemplate 和 SqlSessionDaoSupport,开发者可以在 Spring 环境下使用 MyBatis,这两个类都封装了 SqlSession 的生命周期,确保了在 Spring 事务中正确关闭 ...

    MyBatis所需jar包 mybatis-3.4.5 整合spring可用

    4. **使用MyBatis-Spring的SqlSessionTemplate或SqlSessionDaoSupport**:这两个类可以帮助我们在Spring环境中更方便地使用SqlSession。SqlSessionTemplate是线程安全的,可以直接在业务逻辑中使用,而...

    mybatis-spring-1.0.2.zip

    - **SqlSessionTemplate 和 SqlSessionDaoSupport:** 这两个类提供了对 SqlSession 的线程安全的封装,避免了手动管理事务和关闭 SqlSession 的问题。 - **MapperScannerConfigurer:** 自动扫描并注册 MyBatis ...

    mybatis-spring-1.0.3-SNAPSHOT-bundle

    《MyBatis-Spring 1.0.3-SNAPSHOT:构建高效持久层的基石》 MyBatis-Spring 是一个轻量级的框架,它将 MyBatis 框架与 Spring 框架无缝集成,使得在 Spring 应用中使用 MyBatis 更加方便,提升了开发效率。这个名为...

    mybatis-spring-1.1.0.zip

    2. **SqlSessionTemplate** 和 **SqlSessionDaoSupport**: 这两个类为 DAO(数据访问对象)提供了基础支持,它们是 Spring 的模板模式实现,使得在 DAO 中执行 SQL 查询变得简单。 3. **MapperFactoryBean**: 这个...

    mybatis-spring-1.0.2-reference.pdf

    SqlSession是执行数据库操作的主要接口,MyBatis-Spring提供了两种主要方式来使用SqlSession:SqlSessionTemplate和SqlSessionDaoSupport。 ##### 5.1 SqlSessionTemplate SqlSessionTemplate是一种线程安全的...

    Mybatis-Spring1.0.2中文版说明文档

    该章节可能讲解如何在Spring环境中直接使用Mybatis的API,例如SqlSessionTemplate或SqlSessionDaoSupport,以便在业务逻辑中直接执行自定义的Mybatis操作。 ### 章节八:示例代码 这部分提供了实际的代码示例,...

    MyBatis-Spring.pdf

    同时,可以通过SqlSessionTemplate或SqlSessionDaoSupport来间接调用这些API,保持代码的整洁性。 6. **使用Spring Batch** Spring Batch是Spring提供的批处理框架,与MyBatis结合可以实现大规模数据处理。MyBatis...

    mybatis-spring-1.0.0-RC3-reference

    MyBatis-Spring 集成是在 MyBatis 3 和 Spring 框架之间创建缺失的衔接,它减少了在使用 Spring 3.X 配置和使用 MyBatis 时所需的样板代码和冗余代码。它为 MyBatis 添加了透明的 Spring 事务支持。MyBatis-Spring ...

Global site tag (gtag.js) - Google Analytics