2021-11-06

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

很多东西基本学了不用,过不了多久就忘了,所以每个知识点都可以记录,此次只是记录的MyBatis工具类的创建,没有准备jar包的引用和全局配置文件和映射文件的配置。


一、MyBatis是什么?

MyBatis是一款半自动的数据库持久框架,而我们可以用工具类简化它的操作。

二、操作步骤

1.ThreadLocal 介绍

ThreadLocal 提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的 变量是对应的互相独立的。通过 get 和 set 方法就可以得到当前线程对应的值。

2.使用 ThreadLocal 存储 SqlSession

如果多个 DML 操作属于一个事务,因为 commit()和 rollback()都是由 SqlSession 完成的, 所以必须保证使用一个 SqlSession。但是多个不同的 DML 操作可能在不同类的不同方法中, 每个方法中要单独的获取 SqlSession。比如商城下订单时,其实涉及商品库存变化、订单添 加、订单明细添加、付款、日志添加等多个 DML 操作,分布在不同类中。 如何在多个 DML 操作之间使用同一个 SqlSession 呢,可以使用 ThreadLocal 来存储。保 证一个线程中的操作使用的都是一个 SqlSession。

2.创建工具类包和MybatisUtil类

下面展示一些 代码片


	public class MybatisUtils { 
		private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<>(); 
		private static SqlSessionFactory sqlSessionFactory = null; 
		static{ 
			//创建 SqlSessionFactory InputStream is = null; 
			try{
				is = Resources.getResourceAsStream("mybatis-cfg.xml"); 
			}catch (IOException e){ 
				e.printStackTrace(); 
			}
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); 
		}
		//获取 SqlSession 
		public static SqlSession getSqlSession(){ 
			SqlSession sqlSession = threadLocal.get(); 
			if(sqlSession == null){ 
				sqlSession = sqlSessionFactory.openSession();
				threadLocal.set(sqlSession);
			}
			return sqlSession; 
		}
		//关闭 
		SqlSession public static void closeSqlSession(){ 
			SqlSession sqlSession = threadLocal.get(); 
			if(sqlSession != null){ 
				sqlSession.close(); 
				threadLocal.set(null); 
			} 
		} 
	}

总结

本文主要讲了创建MyBatis工具类通过ThreadLocal 来管理获取SqlSession对象,对数据进行操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值