`

Mybatis获取SqlSession

阅读更多

从SqlSessionFactory中获取SqlSession

现在,我们已经知道如何获取SqlSessionFactory对象了,基于同样的启示,我们就可以获得SqlSession的实例了。SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法。你可以用SqlSession实例来直接执行已映射的SQL语句。例如:

SqlSession session = sqlMapper.openSession();

try {

Blog blog = (Blog) session.selectOne(

"org.mybatis.example.BlogMapper.selectBlog", 101);

} finally {

session.close();

}

这种方法起到的作用,和我们使用之前的MyBatis版本是相似的,现在有一种更简洁的方法。使用合理描述参数和SQL语句返回值的接口(比如BlogMapper.class),这样现在就可以执行更简单,更安全的代码,没有容易发生的字符串文字和转换的错误。

 

 

例如:

SqlSession session = sqlSessionFactory.openSession();

try {

BlogMapper mapper = session.getMapper(BlogMapper.class);

Blog blog = mapper.selectBlog(101);

} finally {

session.close();

}

现在我们来探究一下这里到底执行了什么。

 

探究已映射的SQL语句

这里你也许想知道通过SqlSession和Mapper对象到底执行了什么操作。已映射的SQL语句是一个很大的主题,而且这个主题会贯穿本文档的大部分内容。为了给出一个宏观的概念,这里有一些示例。

上面提到的任何一个示例,语句是通过XML或注解定义的。我们先来看看XML。使用基于XML的映射语言,在过去的几年中使得MyBatis非常流行,它为MyBatis提供所有的特性设置。如果你以前用过MyBatis,这个概念就应该很熟悉了,但是XML映射文件也有很多的改进,后面我们会详细来说。这里给出一个基于XML映射语句的示例,这些语句应该可以满足上述示例中SqlSession对象的调用。

 

<?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" parameterType="int" resultType="Blog">

select * from Blog where id = #{id}

</select>

</mapper>

 

这个简单的例子中看起来有很多额外的东西,但是也相当简洁了。如果你喜欢,你可以在一个单独的XML映射文件中定义很多的映射语句,除XML头部和文档类型声明之外,你可以得到很多方便之处。在文件的剩余部分是很好的自我解释。在命名空间“com.mybatis.example.BlogMapper”中,它定义了一个名为“selectBlog”的映射语句,这样它允许你使用完全限定名“org.mybatis.example.BlogMapper.selectBlog”来调用映射语句,我们下面示例中所有的写法也是这样的。

Blog blog = (Blog) session.selectOne(

"org.mybatis.example.BlogMapper.selectBlog", 101);

 

要注意这个使用完全限定名调用Java对象的方法是相似的,这样做是有原因的。这个命名可以直接映射相同命名空间下的映射器类,使用一个名称,参数和返回值和已映射的查询语句都一样的方法即可。这就允许你非常容易地调用映射器接口中的方法,这和你前面看到的是一样的,下面这个示例中它又出现了。

BlogMapper mapper = session.getMapper(BlogMapper.class);

Blog blog = mapper.selectBlog(101);

第二种方式有很多的优点,首先它不是基于文字的,那就更安全了。第二,如果你的IDE有代码补全功能,那么你可以利用它来操纵已映射的SQL语句。第三,不需要强制类型转换,同时BlogMapper接口可以保持简洁,返回值类型很安全

分享到:
评论

相关推荐

    mybatis获取SqlSession源代码流程

    mybatis获取SqlSession源代码流程

    SpringBoot+MyBatis+SqlSession

    该项目应用Springboot框架,MyBatis持久层与Sqlsession映射进行数据查询

    获取Java的MyBatis框架项目中的SqlSession的方法

    SqlSession中包括已经映射好的SQL语句,这样对象实例就可以直接拿过来用了,那么这里就来讲解获取Java的MyBatis框架项目中的SqlSession的方法

    MyBatis3 用户指南

    MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本数据元素、Map接口和POJOs(普通java对象)到数据库中的记录。 本文...

    mybatis基本使用

    以下是一个基本的 MyBatis 测试使用的描述: 1. 环境准备 ...在测试类中,首先加载 MyBatis 的配置文件,然后获取 SqlSession。通过 SqlSession,你可以获取 Mapper 接口的实例,并调用其方法执行数据库操作。

    springmybatis

    MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...

    MyBatis-3-User-Guide用户手册(中文英文)

    从 SqlSessionFactory 中获取 SqlSession\ 6 探究已映射的 SQL语句 \ 7 命名空间的一点注释 \ 8 范围和生命周期 \ 8 SqlSessionFactoryBuilder \ 8 SqlSessionFactory\ 9 SqlSession \ 9 映射器实例 \ 9 XML...

    MyBatis框架简单的知识点总结.zip

    MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的...

    MyBatis框架简单的知识点总结.docx

    MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的...

    mybatis学习资料

    mybatis官方资料文档,文字版说明,包含代码示例,目录信息如下: * 安装 * 从 XML 中构建 SqlSessionFactory ...* 从 SqlSessionFactory 中获取 SqlSession * 探究已映射的 SQL 语句 * 作用域(Scope)和生命周期

    vertx-mybatis:使用mybatis NON-BLOCK&ASYNCHRONOUS的vertx sqlclient模板

    斑my 使用vertx提供的sql客户端使用异步非阻塞数据库访问。 然后,您组织项目,以便在不放弃SQL Mapper框架(MyBatis)的情况下易于使用ORM...获取查询和参数拥有mybatis sqlsession后,可以使用BoundSql和ParameterMap

    mybatis.zip

    新建maven项目,配置mybatis,通过会话工厂方式获取到数据库连接(案例中没有操作数据库代码,只是获取道连接并打印,说明获取成功)

    深入剖析MyBatis SQL执行流程:从配置到查询结果的全程追踪

    在SqlSession中,通过动态代理机制获取Mapper对象。这些Mapper对象是通过MapperProxyFactory生成的,负责将接口方法调用转换为SQL语句的执行。 当执行Mapper方法时,MyBatis使用MapperProxy的invoke方法创建或获取...

    mybatis结合redis的配置文件及工具类

    jedis工具类、序列化和反序列化工具类、自定义工具类获取SqlSessionFactory、mybatis-config.xml、log4j.properties、redis.properties

    MyBatis中文指南,MyBatis中文帮助文档

    从SqlSessionFactory中获取SqlSession....................................................................... 6 探究已映射的SQL语句 ..........................................................................

    MyBatis3_用户指南(附JavaDB实例)

    从SqlSessionFactory 获取SqlSession....7 探索映射SQL语句....... 8 关于命名空间...9 作用域和生命周期..... 10 Mapper XML配置....11 properties元素12 Settings元素....13 typeAliases元素...... 14 ...

    Mybatis整合第三方缓存ehcache.docx

    1、客户从数据库获取数据视为一次会话,抽象为sqlSession对象 2、一个Excutor包含增删改查的操作; 3、CachingExcutor是对Excutor的包装,此处相当于代理模式 4、当有会话时,先访问CachingExcutor对象,...

    Mybatis--SQL解析流程图

    此图用于展示Mybatis的SQL解析的具体流程,包含了SqlSession和Mapper动态代理对象的获取步骤。通过查阅此图可以对Mybatis的SQL解析流程有一个清晰的认识。

    mybatis-salulu.zip

    MyBatis单表查询简单功能手写实现代码 和mybatis官网的使用方式一样,基本实现了相同的功能 1,读取配置文件 ...3,打开sqlsession 4,获取mapper接口对象 5,调用mapper对象的方法类执行sql,对数据库进行操作

Global site tag (gtag.js) - Google Analytics