本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。

MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper。可以说,了解了这四大核心,便可知 MyBatis 八九。

SqlSessionFactoryBuilder

从命名上可以看出,这个是一个 Builder 模式的,用于创建 SqlSessionFactory 的类。SqlSessionFactoryBuilder 根据配置来构造 SqlSessionFactory。

其中配置方式有两种

1. XML 文件方式

XML 文件方式是作为常用的一种方式:

String resource = "org/mybatis/example/mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

mybatis-config.xml 就是我们的配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers>
</configuration>

2. Java Config

这是第二种配置方式,通过 Java 代码来配置:

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();TransactionFactory transactionFactory = new JdbcTransactionFactory();Environment environment = new Environment("development", transactionFactory, dataSource);Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

Java Config 相比较 XML 文件的方式而言,会有一些限制。比如修改了配置文件需要重新编译,注解方式没有 XML 配置项多等。所以,业界大多数情况下是选择 XML 文件的方式。但到底选择哪种方式,这个要取决与自己团队的需要。比如,项目的 SQL 语句不复杂,也不需要一些高级的 SQL 特性,那么 Java Config 则会更加简洁一点;反之,则可以选择 XML 文件的方式。

SqlSessionFactory

SqlSessionFactory 顾名思义,是用于生产 SqlSession 的工厂。

通过如下的方式来获取 SqlSession 实例:

SqlSession session = sqlSessionFactory.openSession();

SqlSession

SqlSession 包含了执行 SQL 的所有的方法。以下是示例:

SqlSession session = sqlSessionFactory.openSession();
try {
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();
}

Mapper

Mapper 顾名思义,是用做 Java 与 SQL 之间的映射的。包括了 Java 映射为 SQL 语句,以及 SQL 返回结果映射为 Java。

比如,下面是一个常见的 Mapper 接口映射文件:

<?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>

其中 "org.mybatis.example.BlogMapper" 就是我们要射射的接口,selectBlog 就是BlogMapper上的方法。而这个 selectBlog 具体就是要执行“select * from Blog where id = #{id}”这个 SQL 语句。

这样,我们就能通过

Blog blog = session.selectOne(
"org.mybatis.example.BlogMapper.selectBlog", 101);

或者是

BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);

来获取到执行的结果。

当然,如果是采用注解的方式的话,可以省去 XML 文件:

public interface BlogMapper {
@Select("SELECT * FROM blog WHERE id = #{id}")
Blog selectBlog(int id);
}

参考引用

  • 原文同步至https://waylau.com/mybatis-core-concepts/

MyBatis四大核心概念相关推荐

  1. 【Java进阶营】MyBatis四大核心概念

    本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession.Mapper). 图片描述 MyBatis 作为互联 ...

  2. [RabbitMQ]RabbitMQ概念_四大核心概念

    RabbitMQ RabbitMQ 的概念 RabbitMQ 是一个消息中间件:它接受并转发消息.你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收 ...

  3. Mybatis四大核心对象及四大内置对象

    一.MyBatis四大核心对象 MyBatis完成一次数据库操作需要经过的步骤,如下: 1.加载配置文件 2.获取SqlSessionFactoryBuiler对象 3.通过SqlSessionFac ...

  4. Mybatis简介及其核心概念

    千寻铁锁沉江底,一片降幡出石头.--刘禹锡<西塞山怀古> Mybatis简介 Mybatis是什么? MyBatis(3.x以前的版本叫ibatis)是一款一流的支持自定义SQL.存储过程 ...

  5. ES应用场景及核心概念一

    目录 ES基本安装及应用 安装 ​ 使用方式 这里在java中实现,首先引入客户端包 index alias的应用 同步DB数据到ES ES核心概念 type类型弱化. ES核心操作 ES基本安装及应 ...

  6. Spring Boot简介,四大核心,特性

    版权声明:本文为博主原创文章,未经博主允许不得转载 一.Spring Boot简介 1.Spring boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可 ...

  7. Spring Data JPA 之 理解 Persistence Context 的核心概念

    21 理解 Persistence Context 的核心概念 21.1 Persistence Context 相关核心概念 21.1.1 EntityManagerFactory 和 Persis ...

  8. ShardingSphere基本介绍及核心概念

    文章目录 关于分库分表 背景描述 遇到的问题 如何解决 垂直拆分 水平拆分(数据分片) ShardingSphere介绍 Sharding-JDBC Sharding-JDBC主要功能: Shardi ...

  9. SSM Chapter 05 Spring 核心概念

    SSM Chapter 05 Spring 核心概念 笔记 本章目标: 理解Spring IoC的原理 掌握Spring IoC的配置 理解Spring AOP的原理 掌握Spring AOP的配置 ...

最新文章

  1. python 怎样使list 里面的数据相加
  2. android获取时区时间格式,考虑时区的日期/时间转换-Android
  3. win10访问不了局域网计算机名,Win10正式版无法访问局域网电脑怎么办
  4. 在SQL Server 2005中实现表的行列转换()
  5. 网易博客迁移(2011-05-27)
  6. 简单电商购物过程(续1)
  7. 从初创公司的角度来看微服务
  8. 当React Native 遇到了Google reCAPTCHA
  9. linux加密框架 crypto 算法管理 - 动态和静态算法管理
  10. Git如何从众多提交中保留个别提交
  11. 手把手教你如何在安卓平台上实现打电话发短信的功能
  12. 快速预览Office 15服务端:Exchange 2013
  13. 卡巴斯基2010(9.0)key激活商用授权文件安装方法
  14. Navitas GaN IC 驱动 Vivo 可折叠手机
  15. cad文字递增快捷键_AutoCAD常用快捷键命令大全(文字版)
  16. python 006 __ 小斌文档 | 特殊字符的使用
  17. ToothFairy for Mac(一键连接蓝牙设备软件) v2.4.5免激活版
  18. 计算机组成原理 运算器实验
  19. A2021-A2022年度项目总结(二)
  20. 浏览器阻挡cookies_解决WordPress登录出现Cookies被阻止或者您的浏览器不支持

热门文章

  1. kail linux更新源、挂载
  2. CSS精粹之布局技巧
  3. keytool使用方法总结
  4. 两个有序链表序列的合并
  5. mysql bundle 安装_阿里云服务器下安装MySQL (Bundle压缩包 安装)
  6. some any oracle,Oracle之 any、some、all 解析
  7. Codeforces Round #480 (Div. 2) B. Marlin
  8. Node.js安装及环境配置(windows)
  9. Python爬虫基础(三)urllib2库的高级使用
  10. 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性...