MyBatis 四大核心主要包括(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。sql
MyBatis 做为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper。能够说,了解了这四大核心,即可知 MyBatis 八 九。数据库
SqlSessionFactoryBuilder
从命名上能够看出,这个是一个 Builder 模式的,用于建立 SqlSessionFactory 的类。SqlSessionFactoryBuilder 根据配置来构造 SqlSessionFactory。安全
其中配置方式有两种session
1. XML 文件方式
XML 文件方式是做为经常使用的一种方式:mybatis
String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
mybatis-config.xml 就是咱们的配置文件:app
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
工具
2. Java Config
这是第二种配置方式,经过 Java 代码来配置:ui
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 文件的方式。code
SqlSessionFactory
SqlSessionFactory 顾名思义,是用于生产 SqlSession 的工厂。xml
经过以下的方式来获取 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 接口映射文件:
其中 "org.mybatis.example.BlogMapper" 就是咱们要射射的接口,selectBlog 就是BlogMapper上的方法。而这个 selectBlog 具体就是要执行“select * from Blog where id = #{id}”这个 SQL 语句。select * from Blog where id = #{id}
这样,咱们就能经过
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); }