SqlSessionFactory工具类提取

SqlSessionFactory工具类提取

在使用MyBatis来进行数据库操作时,需要从 XML 文件中构建 SqlSessionFactory,对于Mybatis的基础操作出现了些重复代码,如下:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

重复代码会造成的问题:

  • 重负代码不利于后期维护。
  • SqlSessionFactory工厂类进行重复创建,资源消耗大但是性能低。

对此,我们要进行代码优化:

  • 抽取工具类解决代码重复
  • 对指定代码只需要执行一次的使用静态代码块
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class SqlSessionFactoryUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        //静态代码块会随着类的加载而自动执行,且只执行一次

        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}

工具类抽取以后,以后在对Mybatis的SqlSession进行操作的时候,就可以直接使用了

SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();

在具体的方法中按如下顺序调用,如:

		//2.获取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3.获取mapper
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
        //4.调用方法
        mapper.add(brand);
        //提交事务
        sqlSession.commit();
        //释放资源
        sqlSession.close();

优化完成,这样就能解决代码重复和重复创建工厂导致性能低的问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值