MyBatis

MyBatis核心对象

  • SqlSessionFactory
    SqlSessionFactory是MyBatis的核心对象,主要用于加载配置文件,初始化MyBatis,并创建SqlSession。所以需要保证SqlSessionFactory在应用中全局唯一
  • SqlSession
    SqlSession是MyBatis操作数据库的核心对象。SqlSession是在原始JDBC的基础上进行扩展,简化了与数据库的交互工作。并且SqlSession对象提供了数据表的增删改查对应的API方法。
    SqlSession可以形象的看作是一个扩展过的JDBC的Connection扩展对象,它在原有的Connection对象的基础上封装了大量额外的实用方法
package com.factory;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

/**
 * 用于生成dao接口代理实现类的工厂
 */
public class MapperFactory {

    private static SqlSessionFactory factory;
    private static ThreadLocal<SqlSession> tl = new ThreadLocal<>();

    //利用静态块在初始化类时初始化SqlSessionFactory
    static {
        InputStream in = null;
        try {
            //1.读取mybatis主配置文件
            in = Resources.getResourceAsStream("SqlMapConfig.xml");
            //2.创建构对象
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            //3.解析mybatis-config.xml文件
            factory = builder.build(in);
        }catch (Exception e){
            //打印异常信息到控制台
            e.printStackTrace();
            //抛出错误提示程序终止执行
            throw new ExceptionInInitializerError("初始化SqlSessionFactory失败");
        }finally {
            //释放流对象
            if(in != null){
                try{
                    in.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 获取SqlSession对象
     * @return
     * 保留此方法是为了后面对业务层方法增强,利用AOP添加事务
     */
    public static SqlSession getSqlSession(){
        //sqlSession默认会自动commit提交事务,设置为false代表关闭自动提交,改为手动提交
         return factory.openSession(false);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值