01 遇到的问题
–如果我们做一个请求时候多次使用sqlsession对象这样就会造成sqlsession 浪费,也就是资源浪费,效率也会降低
–我们需要达到的目的就是用户发出的一个请求中实现sqlsession的共享
–请求没有改变,线程就不会改变
–最终的目的就是在同一个线程中实现数据sqlsession的共享
02解决方案
ThreadLoacl: 作用 在同一个线程中实现数据(sqlsession)的共享
底层使用的map集合 map.put(key,value);
map.put(线程的ID,conn)

03代码实现

 public class DBUtil {  private   static SqlSessionFactory factory;  private  static ThreadLocal<SqlSession>  tl=new ThreadLocal<>();  static {  InputStream inputStream = null;  try {  //[1]解析myBatis.xml文件  inputStream = Resources.getResourceAsStream("mybatis.xml");  //[2]获得sqlsession工厂  factory=new SqlSessionFactoryBuilder().build(inputStream);  } catch (IOException e) {  e.printStackTrace();  }  }  //获得sqlsession对象  public  static SqlSession   getSqlSession(){  //获得ThreadLoacl中的sqlsession对象  SqlSession sqlSession = tl.get();  if(sqlSession==null){  sqlSession = factory.openSession(true);  //把创建好的对象放到ThreadLoacl  tl.set(sqlSession);  }  return  tl.get();  }  //关闭sqlsession  public  static    void     closeAll(){  SqlSession sqlSession = tl.get();  if(sqlSession!=null){  sqlSession.close();  }  tl.set(null);  }  }  

MyBatis中ThreadLocal相关推荐

  1. MyBatis 中的九种设计模式

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://www.crazyant.net ...

  2. Spring整合mybatis中的sqlSession是如何做到线程隔离的?

    转载自  Spring整合mybatis中的sqlSession是如何做到线程隔离的? 项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按 ...

  3. mybatis中经典的9种设计模式

    mybatis中用到了9种设计模式,学习mybatis的源码以及设计模式,可以提高开发人员软件设计以及开发的水平,写出更加优雅的代码. 文章目录 建造者模式 工厂模式 单例模式 代理模式 组合模式 模 ...

  4. 聊聊 MyBatis 中的设计模式

    虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式. Mybatis至少 ...

  5. 腊月二十八,聊聊 MyBatis 中的设计模式

    作者 | crazyant 链接 | www.crazyant.net/2022.html 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的 ...

  6. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  7. MyBatis中#{}和${}的区别

    ------------------------siwuxie095 MyBatis 中 #{} 和 ${} 的区别 1.在 MyBatis 的映射配置文件中,动态传递参数有两种方式: (1)#{} ...

  8. Mybatis中Oracle和Mysql的Count字段问题

    Mybatis中Oracle和Mysql的Count字段问题 我们在进行项目开发时经常会碰到查询总数的问题,所以我们直接是用select count(1) from table来进行查询.那么在Myb ...

  9. MyBatis中jdbcType=INTEGER、VARCHAR作用

    Mapper.xml中 pid = #{pid,jdbcType=INTEGER} pid = #{pid} 都可以用 Mybatis中什么时候应该声明jdbcType? 当Mybatis不能自动识别 ...

最新文章

  1. [置顶]完美简版学生信息管理系统(附有源码)管理系统
  2. 下载恶意pcap包的网站
  3. IntelliJ IDEA配置maven,并创建一个实例作为演示
  4. Acwing第 8 场周赛【未完结】
  5. javascript 不让成为nan_这10个JavaScript面试题,看看你会几个?
  6. 41岁,她破格提拔为高校副校长
  7. setResult详解
  8. Spring AOP介绍及源码分析
  9. 2月28日 PCA降维,SVD压缩,中心化、归一化、标准化、k-l变换
  10. linux基础总结1
  11. C语言程序设计 利用数组处理批量数据
  12. Spring Boot 网易云课堂视频
  13. java snakeyaml_java – 使用SnakeYAML的嵌套构造
  14. 基于Java的线上诊疗系统毕业设计源码1617411
  15. R_Studio(关联)对Groceries数据集进行关联分析
  16. Js word格式doc文件下载
  17. 【Unity】 冰火 MMORPG游戏中的一些数据参考
  18. kali虚拟机配置成桥接模式
  19. 如何使用petri网建模工具pipe4.3.0
  20. Python(第一章)版本介绍,环境准备及IDLE使用

热门文章

  1. 数据结构与算法--图论最短路径算法应用-词阶求解
  2. RBM/DBN训练中的explaining away概念
  3. Codeforces Round #724 (Div. 2) F. Omkar and Akmar 组合数学 + 博弈
  4. 【学习笔记】信息学竞赛中的概率与期望小结
  5. 数据结构二之线段树Ⅰ——Count Color,Hotel,Transformation,Tree Generator™
  6. 判断整除(opj)(动态规划)
  7. bzoj#4722-由乃【倍增,抽屉原理,bitset】
  8. P4983-忘情【wqs二分,斜率优化】
  9. [2020.11.26NOIP模拟赛]询问【字符串hash】
  10. 牛客练习赛69E-子串【树状数组】