目录
一、Resources
二、SqlSessionFactoryBuilder
三、SqlSessionFactory
四、SqlSession
五、最佳实践
一、Resources
Resources类由MyBatis提供用于获取来自核心配置文件的输入流
相关方法是: InputStream getResourceAsStream(String filepath) ,注意这是一个静态方
法
二、SqlSessionFactoryBuilder
SqlSessionFactoryBuilder类由MyBatis提供用于获取SqlSessionFactory的实例对象
相关方法是: SqlSessionFactory build(InputStream is) ,该方法通过一个输入流返回了
SqlSessionFactory对象
三、SqlSessionFactory
SqlSessionFactory类由MyBatis提供用于获取SqlSession对象,每个基于MyBatis的应用都是以一
个SqlSessionFactory的实例为核心的
相关方法: SqlSession openSession() 和 SqlSession openSession(boolean
autoCommit) ,这两个方法都用于获取SqlSession对象,如果使用有参数的可以指定是否自动提交事务,没有指定参数的默认是不自动提交事务
四、SqlSession
SqlSession类由MyBatis提供用于执行SQL、管理事务、接口代理
常用方法:
方法 | 说明 |
void commit() | 提交事务 |
void rollback() | 回滚事务 |
T getMapper(Class<T> aClass) | 获取指定接口的代理实现类 |
void close() | 释放资源 |
除了以上常用方法外,SqlSession还有很多有关数据库增删改查的方法,但是这些方法繁琐而且不
符合类型安全,所以使用getMapper()方法来获取一个Mapper接口的代理实现类来执行映射语句
是个比较方便的做法
五、最佳实践
SqlSessionFactoryBuilder
方法范围(也就是局部方法变量)。你可以重用SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但是最好还是不要让其一直存在以保证所有的 XML 解析资源开放给更重要的事情
SqlSessionFactory
应用范围。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式
public class SqlSessionUtil {
private static SqlSessionFactory sqlSessionFactory;
static{
try {
InputStream is = Resources.getResourceAsStream("mybatis-
config.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new
SqlSessionFactoryBuilder();
sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
}