天天看点

MyBatis相关API、Resources、SqlSessionFactoryBuilder、SqlSessionFactory及SqlSession

目录

​​一、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);
    }
}