Mybatis学习笔记(02) 多种方法配置SqlSessionFactory
前言
Mybatis 里 SqlSession 是我们使用的最重要的对象,我们使用它完成所需要的工作,具体使用方法下面有简单的演示,详细将在之后的笔记中解答。在这里我们首先关注如何获取 SqlSession。
SqlSessions是由SqlSessionFactory 创建的,而SqlSessionFactory 的创建又需要用到 SqlSessionFactoryBuilder实例,在此,我们首先研究 SqlSessionFactoryBuilder 的几种构建SqlSessionFactory 的不同方法,列表如下:
public SqlSessionFactory build(Reader reader);
public SqlSessionFactory build(Reader reader, String environment);
public SqlSessionFactory build(Reader reader, Properties properties);
public SqlSessionFactory build(Reader reader, String environment, Properties properties);
public SqlSessionFactory build(InputStream inputStream);
public SqlSessionFactory build(InputStream inputStream, String environment);
public SqlSessionFactory build(InputStream inputStream, Properties properties);
public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties);
public SqlSessionFactory build(Configuration config);
仔细查看可知,SqlSessionFactoryBuilder所提供的基本配置方法一共有三种,即使用:Reader、InputStream 和 Configuration,具体而言又是指两种配置方法,即XML文件配置,和手动构建Configuration对象配置。实际上,通过XML配置的结果在实现中也将转换为 Configuration 对象,这个 Configuration 对象可以在获得SqlSessionFactory 后调用getConfiguration()
获取。1另外还有一种配置方法是使用注解,但因为Java注解的一些不足之处,使用注解将无法实现一些高级功能,将在未来介绍,但不推荐使用。
注:如果使用Spring开发,mybatis应该通过Spring配置,可以跳过本文档,Spring配置将在未来补充。
工作环境和共通配置
开发环境
- Eclipse IDE for Java Developers(Version: Neon.2 Release (4.6.2),Build id: 20161208-0600)
- Mybatis 3.4.4
- Mysql Connector 5.1.40
共通配置
Javaee_MybatisTest_CREATE_AND_DATA.sql
# Create and use database
DROP DATABASE IF EXISTS javaee_mybatisTest;
CREATE DATABASE javaee_mybatisTest;
USE javaee_mybatisTest;
# Create data table
CREATE TABLE t_class(
id INT PRIMARY KEY,
name VARCHAR(20)
);
CREATE TABLE t_student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
age INT,
class INT,
CONSTRAINT fk_PerOrders FOREIGN KEY (class) REFERENCES t_class(id)
);
# Initalized data
INSERT INTO t_class(id, name) VALUES(1, '软件工程12-1');
INSERT INTO t_class(id, name) VALUES(2, '软件工程12-2');
INSERT INTO t_class(id, name) VALUES(3, '软件工程12-3');