Mybatis组件
- SqlSessionFactoryBuilder: 工厂构造器
- SqlSessionFactory: 工厂接口,由此生成SqlSession
- SqlSession: 一个发送sql去执行,也可以获取Mapper的接口
-
Sql Mapper:由接口和xml文件(或是java注解)组成的组件,给出sql和映射关系。
组件关系
构建SqlSessionFactory
SqlSessionFactory是一个工厂接口,用于创建SqlSession,SqlSession类似于JDBC中的Connection对象。Mybatis提供两个这个接口的实现类:DefaultSqlSessionFactory和SqlSessionManager,一般使用前者。
Mybatis的配置类为Configuration,在Mybatis整个生命周期中存在,其内部保存了从XML文件中解析的配置信息,下面就接着看下如何使用XML形式来进行配置。
使用XML构建
XML配置文件中,主要对数据源DataSource,事务管理器TransactionManager和映射器SQL Mapper三个方面的配置。
下面是个具体的XML配置文件的例子:
配置文件
有了配置文件后,就可以由此创建SqlSessionFactory了:
创建工厂和SqlSession
创建了SqlSessionFactory后就可以接着创建SqlSession对象了。要注意的是用完后记得关闭SqlSession,否则容易耗尽数据库资源,让连接资源还给数据库连接池,和JDBC的Connection原理类似。
SqlSession的使用
映射器Mapper
一个Mapper通常由一个Java接口和XML文件组成。
下面是个具体的例子:
-
首先定义一个mapper的接口类,外部将基于它进行查询。
java Mapper接口 -
其次创建一个映射xml文件,内部包含查询sql,当调用上面接口的方法时,最终执行其中的sql。
sqlmap.xml -
最终的调用mapper完成查询
基于mapper的查询
经过上述几步最终完成了一次基于mybatis的简单查询。
Mybatis各组件生命周期
- SqlSessionFactoryBuilder 目的就是构建工厂,构建完SqlSessionFactory对象后它的作用就结束了,对其回收。
- SqlSessionFactory的作用就是创建SqlSession,连接并访问一个数据库就只用使用一个SqlSessionFactory就够了,所以是单例的。
- SqlSession 是一次会话,使用完后应及时关闭。
- Mapper对应一条SQL的执行,在一个SqlSession事务中使用和销毁。
网友评论