作者:哈哈 | 来源:互联网 | 2023-09-24 20:12
主要类的介绍
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;}}