• 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.}  
    

      

  • 相关阅读:
    php---观察者模式
    elasticsearch常用查询和注意点
    linux镜像iso格式
    Mysql查询今天、昨天、7天、近30天、本月、上一月数据
    php常用算法
    算法之斐波纳契数列递归和迭代实现
    带你了解session和cookie作用原理区别和用法
    mysql大数据量的分页优化
    常用链接
    自然语言处理
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14297334.html
Copyright © 2020-2023  润新知