zoukankan      html  css  js  c++  java
  • ThreadLocal

    遇到的问题

       如果我们做一个请求时候多次使用sqlsession对象这样就会造成sqlsession 浪费,也就是资源浪费,效率也会降低

       我们需要达到的目的就是用户发出的一个请求中实现sqlsession的共享 

       请求没有改变,线程就不会改变 

       最终的目的就是在同一个线程中实现数据sqlsession的共享 

    解决方案

       ThreadLoacl: 作用  在同一个线程中实现数据(sqlsession)的共享 

       底层使用的map集合  map.put(key,value); 

                          map.put(线程的ID,conn) 

    代码实现

    1.public class DBUtil {  
    2.  
    3.     private   static SqlSessionFactory factory;  
    4.  
    5.     private  static ThreadLocal<SqlSession>  tl=new ThreadLocal<>();  
    6.  
    7.      static {  
    8.          InputStream inputStream = null;  
    9.          try {  
    10.              //[1]解析myBatis.xml文件  
    11.              inputStream = Resources.getResourceAsStream("mybatis.xml");  
    12.              //[2]获得sqlsession工厂  
    13.               factory=new SqlSessionFactoryBuilder().build(inputStream);  
    14.          } catch (IOException e) {  
    15.              e.printStackTrace();  
    16.          }  
    17.      }  
    18.      //获得sqlsession对象  
    19.      public  static SqlSession   getSqlSession(){  
    20.  
    21.          //获得ThreadLoacl中的sqlsession对象  
    22.          SqlSession sqlSession = tl.get();  
    23.  
    24.          if(sqlSession==null){  
    25.  
    26.               sqlSession = factory.openSession(true);  
    27.  
    28.               //把创建好的对象放到ThreadLoacl  
    29.               tl.set(sqlSession);  
    30.          }  
    31.  
    32.          return  tl.get();  
    33.      }  
    34.  
    35.  
    36.      //关闭sqlsession  
    37.  
    38.    public  static    void     closeAll(){  
    39.  
    40.        SqlSession sqlSession = tl.get();  
    41.  
    42.        if(sqlSession!=null){  
    43.  
    44.            sqlSession.close();  
    45.  
    46.        }  
    47.        tl.set(null);  
    48.    }  
    49.  
    50.}  
    

      

  • 相关阅读:
    spring 配置详解
    SpringBoot 快速整合Mybatis(去XML化+注解进阶)
    Spring Boot Mvc 单元测试
    Connect to DB2 database in eclipse via jdbc
    spring boot 学习
    小程序扫描普通链接二维码跳转小程序指定界面
    开启MySQL远程访问权限 允许远程连接
    JS概述
    全然用linux工作,放弃windows
    FarPoint.Win.Spread 常规操作
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14297334.html
Copyright © 2011-2022 走看看