MyBatis的核心对象
1.SqlSessionFactory
SqlSessionFactory是单个数据库映射关系经过编译后的内存镜像,用于创建 SqlSession。 SqlSessionFactory对象的实例通过SqlSessionFactoryBuilder对象来构建,它通过XML配置文件或一个预先定义好的 Configuration实例构建出SqlSessionFactory的实例。通过XML配置文件构建出SqlSessionFactory实例的实现代码如下:
//读取配置文件
InputStream inputStream = Resources.getResourceAsStream("配置文件位置");
根据配置文件构建 sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSessionFactory对象是线程安全的,它一旦被创建,在整个应用执行期间都会存在。如果多次地创建同一个数据库的 SqlSessionFactory,那么此数据库的资源将很容易被耗尽。所以在构建SqISessionFactory实例时,建议使用单列模式。
2.SqlSession
SqlSession是应用程序与持久层之间执行交互操作的一个单线程对象,其主要作用是执行持久化操作。SqlSession对象包含了数据库中所有执行SQL操作的方法,它底层封装了JDBC连接,所以可以直接使用其实例来执行已映射的SQL语句。SqlSession实例是不能被共享的,也是线程不安全的,因此其使用范围最好限定在一次请求或一个方法中,绝不能将其放在一个类的静态字段、实例字段或任何类型的管理范围中使用。使用完 SqISession对象之后,要及时将它关闭,通常可以将其放在finally块中关闭。
SqlSession对象常用方法如下所示。
1.
查询方法。参数 statement是在配置文件中定义的元素的id,parameter是查询所需参数。该方法返回执行SQL语句查询结果的一个泛型对象。
3.
查询方法。参数 statement是在配置文件中定义的元素的id, parameter是查询所需的参数。该方法返回执行SQL语句查询结果的泛型对象的集合。
5.e
查询方法。参数 statement是在配置文件中定义的元素的id,parameter是查询所需的参数, ResultHandler对象用于处理查询返回的复杂结果集,通常用于多表查询。
7.int insert( String statement);
插入方法。参数 statement是在配置文件中定义的
8.int insert(String statement, Object parameter);
插入方法。参数statement是在配置文件中定义的
9.int update(String statement);
更新方法。参数statement是在配置文件中定义的
10.int update(String statement, Object parameter);
更新方法。参数statement是在配置文件中定义的
11.int delete(String statement);
删除方法。参数statement是在配置文件中定义的
12.int delete(String statement, Object parameter );
删除方法。参数statement是在配置文件中定义的
13.void commit();
提交事务的方法。
14.void rollback();
回滚事务的方法。
15.void close();
关闭SqlSession对象。
16.
该方法会返回 Mapper接口的代理对象,该对象关联了 Sqlsession对象,开发人员可以使用该对象直接调用方法操作数据库。参数type是 Mapper的接口类型。
17.Connection getConnection();
获取JDBC数据库连接对象的方法。
注意:为了简化开发,可以将构建SqlSessionFactory对象、创建 SqlSession对象等重复性代码封装到一个工具类中,然后通过工具类来创建 SqlSession。
MyBatis配置文件元素
<configuration>
<!-- 属性 -->
<properties/>
<!-- 设置 -->
<settings/>
<!-- 类型命名 -->
<typeAliases/>
<!-- 类型处理器 -->
<typeHandlers/>
<!-- 对象工厂 -->
<objectFactory/>
<!-- 插件 -->
<plugins/>
<!-- 配置环境 -->
<environments>
<!-- 环境变量 -->
<environment>
<!-- 事务管理器 -->
<transactionManager/>
<!-- 数据源-->
<dataSource/>
</environment>
</environments>
<!-- 数据库厂商标识 -->
<databaseIdProvider/>
<!-- 映射器 -->
<mappers/>
</configuration>