Mybatis3源码分析(09)-SqlSession创建及简要说明

本文详细探讨了Mybatis中SqlSession的使用,从接口定义到创建过程,再到SqlSessionFactory和SqlSession的线程安全特性。SqlSession的生命周期包括select、update等操作,以及commit、rollback和close。通过DefaultSqlSessionFactory的build方法生成SqlSession,并利用Executor和Transaction处理SQL操作。SqlSessionFactory作为线程安全的单例,而SqlSession需每个线程独立持有,确保线程安全。
摘要由CSDN通过智能技术生成

SqlSession的使用简单

在得到SqlSessionFactory之后就可以创建一个SqlSession对象了,SqlSession对象的生命周期通常像如下方法所示:

public static void useSqlSession(SqlSessionFactory sqlSessionFactory)
	{
		//在通过SqlSessionFactory获取一个SqlSession
		SqlSession sqlSession=sqlSessionFactory.openSession();
		//用标准的try/catch/finally写法操作数据库
		try
		{
			//select
			//update等待操作
			
			//提交事务
			sqlSession.commit();
		}
		catch(Exception e)
		{
			//出错,回滚事务
			sqlSession.rollback();
		}
		finally
		{
			//关闭
			sqlSession.close();
		}
	}

SqlSession接口定义

SqlSession定义了操作数据库的基本,这个Mybatis定义的用户层接口,使用该接口基本能满足用户(调用客户端)访问数据库的基本要求。由于接口定义的代码和注释比较多,这里就不贴了。其主要的方法如下:
  1. select类方法
  2. update/insert/delete方法
  3. commit()
  4. rollback()
  5. close()

如果了解过jdbc,肯定知道这些方法的用途!

SqlSession的创建过程

SqlSessionFactoryBuilder.build()方法会创建一个DefaultSqlSessionFactory对象

 public SqlSessionFactory build(Configuration config) {
    return new DefaultSqlSessionFactory(config);
  }
我们再来看 DefaultSqlSessionFactory.openSession()方法

 public SqlSession openSession() {
    return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false);
  }
  //这个是最终创建SqlSession对象的方法,需要三个参数
  //execType,这个示例使用的是configuration.getDefaultExecutorType(),即在Configuration默认配置的
  //事务隔离等级,我们对数据库操作里一般都不会带这个属性,这个属性由数据库分配即可
  //autoCommit:这个一般都是false,不然事务将没有意义
  private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) {
    Transaction tx = null;
    try {
      final Environment environment = configuration.getEnvironment();
      //获取一个事务工厂,这个也是在配置文件中配置的
      final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值