有关Mybatis创建线程会话的工具类
来源:互联网 发布:药店服务论文数据分析 编辑:程序博客网 时间:2024/06/03 23:02
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisSessionFactory {
private static SqlSessionFactory sqlSessionFactory;
private static ThreadLocal<SqlSession> sqlSessionVar = new ThreadLocal<>();
static {
String resource = "mybatis-config.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
// 根据配置生成一个sessionFactory,对应一个数据库
sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 给过滤器调用,在开始之前(doFilter之前)调用该方法,并保存返回值
*
* @return
*/
public static boolean openSession() {
SqlSession sqlSession = sqlSessionVar.get();
// 如果线程中没有SqlSession的变量,创建一个并保存到线程中
if (sqlSession == null) {
sqlSession = sqlSessionFactory.openSession();
sqlSessionVar.set(sqlSession);
return true;
} else {
return false;
}
}
/**
* 创建一个不使用线程变量的SqlSession
*
* @return
*/
public static SqlSession openSessionWithoutThreadLocal() {
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
/**
* 关闭线程中的SqlSession
*/
public static void closeSession() {
SqlSession sqlSession = sqlSessionVar.get();
// 如果线程中没有SqlSession的变量,创建一个并保存到线程中
if (sqlSession != null) {
sqlSession.close();
// 关闭会话以后,要把session从线程中删除掉
sqlSessionVar.remove();
}
}
/**
* 获取一个数据库会话,因为此方法不创建会话,因为也不要在使用以后自行关闭会话。
*
* @return
*/
public static SqlSession getSession() {
SqlSession sqlSession = sqlSessionVar.get();
if (sqlSession == null) {
throw new RuntimeException("会话过滤器未起作用,请通过会话过滤器过滤后再访问业务代码");//可根据自己需求创建异常类
}
return sqlSession;
}
}
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisSessionFactory {
private static SqlSessionFactory sqlSessionFactory;
private static ThreadLocal<SqlSession> sqlSessionVar = new ThreadLocal<>();
static {
String resource = "mybatis-config.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
// 根据配置生成一个sessionFactory,对应一个数据库
sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 给过滤器调用,在开始之前(doFilter之前)调用该方法,并保存返回值
*
* @return
*/
public static boolean openSession() {
SqlSession sqlSession = sqlSessionVar.get();
// 如果线程中没有SqlSession的变量,创建一个并保存到线程中
if (sqlSession == null) {
sqlSession = sqlSessionFactory.openSession();
sqlSessionVar.set(sqlSession);
return true;
} else {
return false;
}
}
/**
* 创建一个不使用线程变量的SqlSession
*
* @return
*/
public static SqlSession openSessionWithoutThreadLocal() {
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
/**
* 关闭线程中的SqlSession
*/
public static void closeSession() {
SqlSession sqlSession = sqlSessionVar.get();
// 如果线程中没有SqlSession的变量,创建一个并保存到线程中
if (sqlSession != null) {
sqlSession.close();
// 关闭会话以后,要把session从线程中删除掉
sqlSessionVar.remove();
}
}
/**
* 获取一个数据库会话,因为此方法不创建会话,因为也不要在使用以后自行关闭会话。
*
* @return
*/
public static SqlSession getSession() {
SqlSession sqlSession = sqlSessionVar.get();
if (sqlSession == null) {
throw new RuntimeException("会话过滤器未起作用,请通过会话过滤器过滤后再访问业务代码");//可根据自己需求创建异常类
}
return sqlSession;
}
}
阅读全文
0 0
- 有关Mybatis创建线程会话的工具类
- 有关线程的创建
- 绑定当前线程的Hibernate会话配置工具类
- Executors 工具类 创建 的 线程池
- mybatis和hibernate创建会话的简单区别
- Mybatis:逆向生成工具,DATE,TIMESTAMP的有关问题
- 有关JSON的工具类
- 会话的创建
- MyBatis优化——创建工具类
- 利用线程创建发送手机验证码的工具类
- 会话对应的线程id
- 有关线程的知识点
- 有关线程的函数
- 有关线程的知识!
- MyBatis的工具类SqlSession
- MyBatis工具类的封装
- PPP 会话的创建过程
- MyBatis自动创建代码工具
- net提高网站访问速度可做哪些优化教程
- Eclipse平台下Maven打包
- 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
- GreenDao单利封装
- 命令行搭建vue-cli脚手架
- 有关Mybatis创建线程会话的工具类
- oracle分组排序几种情况总结
- 百度地图API自定义点路书,路书点击事件,路书速度动态改变
- Windows单机配置Zookeeper环境
- JAVA常见基础题(持续整理)
- 基于STM32F103关于FreeRTOS 学习笔记
- 英文字符串强制换行
- 如何制作类似fontawesome的图标库
- ionic--遇到URL中包含中文解决办法