【Mybatis】

您所在的位置:网站首页 idea如何新建mybatis框架 【Mybatis】

【Mybatis】

2023-03-24 15:15| 来源: 网络整理| 查看: 265

【Mybatis】| 如何创建MyBatis的工具类 原创

狮子也疯狂 2023-03-22 14:28:57 博主文章分类:spring开发 ©著作权

文章标签 mybatis java 开发语言 sql 初始化 文章分类 MySQL 数据库

©著作权归作者所有:来自51CTO博客作者狮子也疯狂的原创作品,请联系作者获取转载授权,否则将追究法律责任

目录​​🌟更多专栏请点击👇​​​​一、前言​​​​二、实现过程​​​​1. 创建一个ThreadLocal对象​​​​2. 初始化SqlSessionFactory​​​​3. 获取并存储sqlSession对象​​​​4. 关闭sqlSession对象​​​​三、 总代码​​🌟更多专栏请点击👇

专栏

名字

🔥Elasticsearch专栏

​​es​

🔥spring专栏

​​spring开发​

redis专栏

​​redis学习笔记​

🔥项目专栏

​​项目集锦​

修bug专栏

​​bug修理厂​

一、前言

使用MyBatis框架在持久层操作中,如果多个DML操作都属于一个事务,因为commit()和rollback()都是SqlSession完成的,所以必须保证只使用一个SqlSession,但是不同的DML操作可能在不同类的不同方法中,每个方法都需要获取SqlSession,所以应该如何在多个DML操作中保证使用同一个SqlSession呢?

【Mybatis】| 如何创建MyBatis的工具类_sql

二、实现过程1. 创建一个ThreadLocal对象

下面给大家带来了一个工具类:ThreadLocal,它可以储存SqlSession对象,并且保证一个线程只使用一个SqlSession。现在来学习一下如何创建MyBatis这个工具类

首先需要new一个ThreadLocal对象,以便存储SqlSession:

private static ThreadLocal threadLocal = new ThreadLocal();2. 初始化SqlSessionFactory

在一个静态代码块中初始化SqlSessionFactory:

static { //创建SqlSessionFactory InputStream is = null; try { is = Resources.getResourceAsStream("mybatis-cfg.xml");

} catch (IOException e) { e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

}

3. 获取并存储sqlSession对象

接下来就是从ThreadLocal中获取sqlSession对象,并且使用ThreadLocal存储该对象:

tips:存储SqlSession的时候要判断该对象是否为空,要是为空就要获取一个,然后再存到ThreadLocal,返回一个SqlSession。

//获取SqlSession public static SqlSession getSqlSession(){ SqlSession sqlSession = threadLocal.get();

if(sqlSession == null){ sqlSession = sqlSessionFactory.openSession(); threadLocal.set(sqlSession); }

return sqlSession; }

4. 关闭sqlSession对象

接下来也可以在该工具类写关闭sqlSession方法

//关闭sqlSession public static void closeSqlSession(){ SqlSession sqlSession = threadLocal.get(); if (sqlSession != null){ sqlSession.close(); threadLocal.set(null); } }三、 总代码public class MyBatisUtils { private static ThreadLocal threadLocal = new ThreadLocal(); private static SqlSessionFactory sqlSessionFactory = null; static { //创建SqlSessionFactory InputStream is = null; try { is = Resources.getResourceAsStream("mybatis-cfg.xml");

} catch (IOException e) { e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

} //获取SqlSession public static SqlSession getSqlSession(){ SqlSession sqlSession = threadLocal.get(); if(sqlSession == null){ sqlSession = sqlSessionFactory.openSession(); threadLocal.set(sqlSession); } return sqlSession; }

//关闭sqlSession public static void closeSqlSession(){ SqlSession sqlSession = threadLocal.get(); if (sqlSession != null){ sqlSession.close(); threadLocal.set(null); } }}

收藏 评论 分享 举报

上一篇:mysql第二次数据库实验报告部分题

下一篇:【JWT鉴权】如何来写一个token令牌认证登录?



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3