0
点赞
收藏
分享

微信扫一扫

Mybatis一发入魂之主要类的介绍和创建工具类

hwwjian 2022-03-26 阅读 34
javajava-ee

主要类的介绍

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;
    }

}
举报

相关推荐

0 条评论