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

mybatis--sqlsession

 
阅读更多

sqlsession代表与数据库一次回话,访问一次数据库就是一次回话,sqlsession底层封装了对数据库curd的操作实现.

SqlSession提供select/insert/update/delete方法,在旧版本中使用使用SqlSession接口的这些方法,但是新版的Mybatis中就会建议使用Mapper接口的方法。映射器其实就是一个动态代理对象,进入到MapperMethod的execute方法就能简单找到SqlSession的删除、更新、查询、选择方法,从底层实现来说:通过动态代理技术,让接口跑起来,之后采用命令模式,最后还是采用了SqlSession的接口方法(getMapper()方法等到Mapper)执行SQL查询(也就是说Mapper接口方法的实现底层还是采用SqlSession接口方法实现的)

SqlSession session = sqlSessionFactory.openSession();try {  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);} finally {  session.close();

SqlSession session = sqlSessionFactory.openSession();try {  BlogMapper mapper = session.getMapper(BlogMapper.class);  Blog blog = mapper.selectBlog(101);} finally {  session.close();

上面一个是基于xml定义的,一个是基于注解定义的,mybatis全部特性都是利用xml映射语言来实现的。

?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="org.mybatis.example.BlogMapper">  <select id="selectBlog" resultType="Blog">    select * from Blog where id = #{id}  </select>

通过完全限定性类名找到同名的mapper中命名空间下的sql语句。

 BlogMapper 这样的映射器类(Mapper class)

Mybatis官方手册建议通过mapper对象访问mybatis,因为使用mapper看起来更优雅

spring管理bean后,一个MapperFactoryBean对象拥有一个sqlSession对象。类型是org.mybatis.spring.SqlSessionTemplate

每个MapperFactoryBean对象初始化的时候,都会创建一个sqlSession,代码在MapperFactoryBean类的父类SqlSessionDaoSupport中,当spring向MapperFactoryBean对象中注入SqlSessionFactory时就创建了SqlSession:

重要:spring整合mybatis使用的sqlSession类型是org.mybatis.spring.SqlSessionTemplate

【结论】spring整合mybatis后,非事务环境下,每次操作数据库都使用新的sqlSession对象。因此mybatis的一级缓存无法使用(一级缓存针对同一个sqlsession有效)

 

转载于:https://my.oschina.net/u/3043570/blog/2208681

分享到:
评论

相关推荐

    mybatis-spring-1.3.1.jar下载

    4. **简化DAO开发**:使用MyBatis-Spring,开发者可以专注于编写Mapper接口,而无需关心SqlSession的创建、关闭和事务提交等细节。 5. **批处理**:支持使用Spring的Batch模式进行批处理操作,提高数据插入、更新的...

    mybatis-3.2.8 mybatis-3.3.0-SNAPSHOT.jar

    4. **SqlSession管理**:提供了更灵活的SqlSession管理,包括自动关闭和事务控制,简化了数据库操作的生命周期管理。 5. **日志系统**:集成了多种日志框架,如Log4j、Logback和Java内置的日志,方便开发者进行调试...

    mybatis-spring-1.31.jar

    它实现了将MyBatis的SqlSession和Mapper接口与Spring的依赖注入(DI)和AOP特性相结合,从而简化了开发过程,提高了代码的可测试性和可维护性。 首先,MyBatis-Spring通过自动配置,可以将MyBatis的数据源、...

    mybatis-3.3.0,mybatis-spring-1.2.3.jar

    至于压缩包中的"mybatis-3.3.0"文件,这很可能包含了MyBatis框架的核心库,其中包括了MyBatis的主要类和接口,如SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession等。源码分析可以帮助我们深入理解MyBatis...

    mybatis-spring-1.3.0.jar 下载

    1. **自动扫描Mapper接口并注入SqlSession**:MyBatis-Spring能自动扫描项目中的Mapper接口,并为每个接口注入一个实现了该接口的代理对象,该代理对象内部封装了SqlSession,从而简化了对数据库操作的代码。...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    每个SQL语句可以有对应的ID,以便在Java代码中通过SqlSession调用。同时,`&lt;resultMap&gt;`标签用于描述查询结果到Java对象的映射关系,使得MyBatis能自动将数据库查询结果转化为Java对象。 这两个DTD文件是MyBatis的...

    mybatis-spring-1.2.0.jar

    使用MyBatis-Spring,开发者可以将MyBatis的Mapper接口直接注入到Spring的bean中,通过方法调用来执行SQL操作,无需关心底层的SqlSession和Statement的创建和关闭。这样既保留了MyBatis的简单易用,又利用了Spring的...

    mybatis-3.2.5.jar及mybatis-spring-1.2.2.jar

    这个类库也提供一个简单的方式来注入 MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 ...

    Mybatis-Spring-1.2.2中文文档.zip

    Mybatis-Spring提供了一个桥梁,使得Mybatis的SqlSession和Spring的数据访问抽象能够无缝协作。通过这个集成,用户可以在Spring的事务管理、依赖注入和AOP特性中充分利用Mybatis的灵活性。 2. **安装与配置** ...

    MyBatis整合Spring中间件jar包 mybatis-spring-1.3.0.jar

    `SqlSessionFactory`是MyBatis的核心对象,用于生产`SqlSession`,进而执行SQL语句。在Spring配置文件中,我们需要定义一个`SqlSessionFactoryBean`,并指定数据源、MyBatis的配置文件路径等属性。例如: ```xml ...

    MyBatis-3.2.2和mybatis-spring-1.2.1架包

    2. SqlSessionFactoryBean:提供了一个SqlSessionFactoryBean,用于创建SqlSessionFactory,它是MyBatis的核心工厂类,负责创建SqlSession,进而执行SQL操作。 3. SqlSessionTemplate:封装了SqlSession的常用操作,...

    mybatis-spring-1.3.3.jar官方下载

    1. **SqlSessionTemplate**:这是一个 Spring 封装的 SqlSession 对象,提供了线程安全的 SQL 执行操作。开发者可以通过 SqlSessionTemplate 直接执行 SQL 语句,无需关心事务管理、资源关闭等细节。 2. **...

    mybatis-spring-1.0.1-bundle.zip

    该框架主要解决了在 Spring 应用中如何管理 MyBatis 的 SqlSessionFactory 和 SqlSession。在传统的 MyBatis 使用中,SqlSession 的创建、事务管理和关闭都需要手动处理,这在 Spring 应用中显得较为繁琐。MyBatis-...

    mybatis-3-mybatis-3.3.0.zip

    - **SqlSessionFactory**: 这是MyBatis的核心工厂类,用于创建SqlSession对象,它是执行SQL的入口。 - **SqlSession**: 提供了与数据库交互的方法,如执行SQL、提交事务等。 - **Mapper接口和Mapper XML文件**: ...

    mybatis-spring 整合包

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

    mybatis-spring-1.1.1-bundle

    MyBatis-Spring是MyBatis和Spring之间的粘合剂,它提供了将MyBatis的SqlSession和Mapper接口透明地注入到Spring Bean中的能力。这使得开发者可以利用Spring的事务管理和其他服务,同时享受MyBatis的SQL映射灵活性。 ...

    mybatis-3-mybatis-3.2.6

    SqlSessionFactory是MyBatis的主要工厂类,负责创建SqlSession对象,而SqlSession则作为与数据库交互的会话,执行SQL语句并管理事务。Mapper接口是业务操作的接口,MyBatis通过动态代理机制将这些接口的方法转换为...

    mybatis-spring-1.2.3-source.zip

    - **SqlSessionTemplate**:这个类是MyBatis-Spring提供的一个线程安全的SqlSession实现,它封装了SqlSession的创建、执行和关闭,避免了手动管理SqlSession的繁琐工作。 - **MapperScannerConfigurer**:这个类...

    mybatis-spring-1.3.2.zip

    SqlSessionFactory 是 MyBatis 的核心组件,用于创建 SqlSession,进而执行 SQL 查询。 2. **SqlSessionTemplate**: 它是一个线程安全的 SqlSession 实现,可以避免在 Spring 应用中直接使用 SqlSession 的并发问题...

    mybatis-spring整合开发jar包.zip

    Mybatis-3.5.1.jar包含Mybatis的核心库,如SqlSession、Mapper接口和XML配置文件解析等。spring-context-4.0.3.RELEASE.jar则是Spring框架的一部分,包含了核心的容器服务,如bean的定义、初始化和管理,以及AOP...

Global site tag (gtag.js) - Google Analytics