Mybatis获取Sqlsession的工具类
Posted gaosj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis获取Sqlsession的工具类相关的知识,希望对你有一定的参考价值。
package com.jyk.mybatis.util; import java.io.IOException; import java.io.Reader; import java.sql.Connection; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /* * MyBatis工具类 */ public class MyBatisUtil { private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>(); private static SqlSessionFactory sqlSessionFactory; //静态块加载src目录下的mybatis配置文件 static{ try { Reader reader = Resources.getResourceAsReader("mybatis.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); } } /* * 禁止外界通过new方法创建 */ private MyBatisUtil(){} /* * 获取sqlsession */ public static SqlSession getSqlSession() { //从当前线程中获取sqlSession对象 SqlSession sqlSession = threadLocal.get(); //判断SqlSession对象是否为空 if(sqlSession==null) { //在SqlSessionFactory对象非空的情况下,获取SqlSession对象 sqlSession = sqlSessionFactory.openSession(); //将SqlSession对象与当前线程绑定在一起 threadLocal.set(sqlSession); } return sqlSession; } /* * 关闭sqlsession与当前线程分开 */ public static void closeSqlSession() { //从当前线程中获取SqlSession对象 SqlSession sqlSession = threadLocal.get(); if(sqlSession != null) { //关闭SqlSession对象 sqlSession.close(); //分开当前线程与SqlSession对象的关系,目的是尽早进行垃圾回收 threadLocal.remove(); } } /* * 测试方法 */ public static void main(String[] args) { Connection conn = MyBatisUtil.getSqlSession().getConnection(); if(conn==null) { System.out.println("连接为空"); } else { System.out.println("连接不为空"); } } }
以上是关于Mybatis获取Sqlsession的工具类的主要内容,如果未能解决你的问题,请参考以下文章
SSM-MyBatis-10:Mybatis中SqlSession的getMapper()和简单的工具类MyBatisUtils