主要类的介绍
1.Resources类:
mybatis中的一个类,主要读取配置文件
String s = "mybatis-Zhu.xml";
InputStream in = Resources.getResourceAsStream(s);
2.SqlSessionFactoryBuilder类:
创建SqlSessionFactory对象,用builder方法创建SqlSessionFactory对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);
3.SqlSessionFactory:
重量级对象,程序创建一个对象耗时较长,使用资源比较多,在整个项目中有一个就够用了。
SqlSessionFactory是一个接口,实现类:DefaultSqlSessionFactory。
SqlSessionFactory作用:获取SqlSession对象
//创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);
//获取 SqlSession对象,从SqlSessionFactory中获取
SqlSession sqlSession = factory.openSession();
openSession():无参数,获取是非自动提交事务的SqlSession对象
openSession():有参数,true获取是自动提交事务的SqlSession对象
false获取是非自动提交事务的SqlSession对象
SqlSession:
是一个接口:定义了操作数据的方法,
例如,selectOne(),selectList(),insert(),update(),delete(),commit(),rollback()
SqlSession接口的实现类DefaultSession
使用要求:SqlSess对象不是线程安全的,需要在方法内部使用,在执行sql语句之前蛮实用openSeseeion()获取SqlSession对象,在执行完sql语句后,需要关闭,执行sqlSession.close()
sqlSession.close();
----------------------------------------------------------------------------------------------------------
创建一个工具类
专门用来获取SqlSession对象
第一步:
创建一个utils包,在utils包里创建一个MyBatisUtils类
第二步:
SqlSessionFactory对象是重量级的,一个项目一个就够用,所以在静态代码块中创建,类加载的时候,静态代码块只执行一次,
使用:直接用类名MyBatisUtils.getSqlSession()得到一个SqlSession对象
public class MyBatisUtils {
private static SqlSessionFactory factory = null;
static {
String s = "mybatis-Zhu.xml";//和项目中的主配置文件名一致
try {
InputStream in = Resources.getResourceAsStream(s);
//创建SqlSessionFactory对象
factory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession方法
public static SqlSession getSqlSession(){
SqlSession sqlSession = null;
if (factory != null) {
sqlSession=factory.openSession();//非自动提交事务
}
return sqlSession;
}
}