从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源代码流程
该项目应用Springboot框架,MyBatis持久层与Sqlsession映射进行数据查询
SqlSession中包括已经映射好的SQL语句,这样对象实例就可以直接拿过来用了,那么这里就来讲解获取Java的MyBatis框架项目中的SqlSession的方法
MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本数据元素、Map接口和POJOs(普通java对象)到数据库中的记录。 本文...
以下是一个基本的 MyBatis 测试使用的描述: 1. 环境准备 ...在测试类中,首先加载 MyBatis 的配置文件,然后获取 SqlSession。通过 SqlSession,你可以获取 Mapper 接口的实例,并调用其方法执行数据库操作。
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...
从 SqlSessionFactory 中获取 SqlSession\ 6 探究已映射的 SQL语句 \ 7 命名空间的一点注释 \ 8 范围和生命周期 \ 8 SqlSessionFactoryBuilder \ 8 SqlSessionFactory\ 9 SqlSession \ 9 映射器实例 \ 9 XML...
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的...
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的...
mybatis官方资料文档,文字版说明,包含代码示例,目录信息如下: * 安装 * 从 XML 中构建 SqlSessionFactory ...* 从 SqlSessionFactory 中获取 SqlSession * 探究已映射的 SQL 语句 * 作用域(Scope)和生命周期
斑my 使用vertx提供的sql客户端使用异步非阻塞数据库访问。 然后,您组织项目,以便在不放弃SQL Mapper框架(MyBatis)的情况下易于使用ORM...获取查询和参数拥有mybatis sqlsession后,可以使用BoundSql和ParameterMap
新建maven项目,配置mybatis,通过会话工厂方式获取到数据库连接(案例中没有操作数据库代码,只是获取道连接并打印,说明获取成功)
在SqlSession中,通过动态代理机制获取Mapper对象。这些Mapper对象是通过MapperProxyFactory生成的,负责将接口方法调用转换为SQL语句的执行。 当执行Mapper方法时,MyBatis使用MapperProxy的invoke方法创建或获取...
jedis工具类、序列化和反序列化工具类、自定义工具类获取SqlSessionFactory、mybatis-config.xml、log4j.properties、redis.properties
从SqlSessionFactory中获取SqlSession....................................................................... 6 探究已映射的SQL语句 ..........................................................................
从SqlSessionFactory 获取SqlSession....7 探索映射SQL语句....... 8 关于命名空间...9 作用域和生命周期..... 10 Mapper XML配置....11 properties元素12 Settings元素....13 typeAliases元素...... 14 ...
1、客户从数据库获取数据视为一次会话,抽象为sqlSession对象 2、一个Excutor包含增删改查的操作; 3、CachingExcutor是对Excutor的包装,此处相当于代理模式 4、当有会话时,先访问CachingExcutor对象,...
此图用于展示Mybatis的SQL解析的具体流程,包含了SqlSession和Mapper动态代理对象的获取步骤。通过查阅此图可以对Mybatis的SQL解析流程有一个清晰的认识。
MyBatis单表查询简单功能手写实现代码 和mybatis官网的使用方式一样,基本实现了相同的功能 1,读取配置文件 ...3,打开sqlsession 4,获取mapper接口对象 5,调用mapper对象的方法类执行sql,对数据库进行操作