Mybatis工具类的封装

news2024/12/26 0:45:30

为什么要进行Mybatis工具类的封装?

        每次我们执行数据库操作都需要做以下操作:

        //读取配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        //通过配置文件创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过sqlSessionFactory创建核心类  sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //通过sqlSession获取dao接口
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //执行增删改查操作
        User user = new User();
        user.setUsername("张三");
        user.setPassword("123456");
        user.setRid(2);
        userMapper.addUser(user);
        //提交sqlSession
        sqlSession.commit();
        //关闭sqlSession
        sqlSession.close();

        执行一次就要写这么多的代码,就算是每次复制粘贴也需要赋值相当多的内容,漏掉一行就可能导致报错, 因此我们通过封装一个MybatisUtil工具类来简化我们的代码以提高我们代码的效率,同时也方便我们去检查维护代码。

封装MybatisUtil工具类

        我们新建一个工具类来封装读取配置文件、通过配置文件创建SqlSessionFactory、通过sqlSessionFactory创建核心类 sqlSession、提交sqlSession、关闭sqlSession这几个操作,代码如下:

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MybatisUtil {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        //读取配置文件
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //通过配置文件创建SqlSessionFactory
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
    public static SqlSession getSqlSession(){
        //通过sqlSessionFactory创建核心类 sqlSession
        return sqlSessionFactory.openSession();
    }
    public static void closeSqlSession(SqlSession sqlSession){
        //提交sqlSession
        sqlSession.commit();
        //关闭sqlSession
        sqlSession.close();
    }
}

        至此我们的MybatisUtil工具类就封装好啦,接下来给大家提供一个实例来展示如何调用这个工具类,直接上代码:

public boolean getUserByUsername(String username) {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Boolean b = userMapper.getUserByUsername(username);
        MybatisUtil.closeSqlSession(sqlSession);
        return b;
    }

        相比较封装之前的代码是不是简洁了很多呢,如果有小伙伴不知道该如何配置Mybatis,可以看我的下一篇文章,在下一篇文章将会给大家展示一下Mybatis的一整套配置文件。

        求赞求赞,关注一下我吧,各位大官人!!!给大家磕一个!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2046969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模板[C++]

目录 1.🚀泛型编程🚀 2.🚀函数模板🚀 2.1 ✈️函数模板概念✈️ 2.2 ✈️函数模板格式✈️ 2.3✈️函数模板的原理✈️ 2.4 ✈️函数模板的实例化✈️ 2.5 ✈️模板参数的匹配原则✈️ 3.🚀类模板&#x1f680…

Ubuntu20.4 系统安装后无wifi图标

0. 问题排查 1.检查 BIOS 设置: 有时候,无线网卡可能在 BIOS 中被禁用。重启电脑,进入 BIOS 设置,确保无线网卡选项是启用的。 2.检查硬件开关: 检查您的笔记本电脑是否有物理开关或键盘快捷键来启用或禁用无线网卡。 3.在软件更新中切换…

Codeforces Round 495 (Div. 2) F. Sonya and Bitwise OR(线段树)

原题链接:F. Sonya and Bitwise OR 题目大意: 给出一个长度为 n n n 的数组 a a a,并给出 m m m 次询问以及一个数字 x x x。 每个询问形式如下给出: 1 1 1 i i i y y y :将 a i a_{i} ai​ 位置的值更改为 y…

将2,3,4,5,6,8分别填入算式“口口口X口口口“的“囗“中,怎么填使得算式结果最大。

一、解题思路 将数组元素进行全排列:对整个数组进行全排列,这样我们可以避免手动选择组合、排列剩余元素等步骤。 直接分割排列后的数组:在每一个全排列中,前3个元素和后3个元素自然形成了一个组合和一个剩余元素组合。 计算并…

Linux安装redis和使用redisDesktop连接

目录 Linux安装redis及启动 第一步:下载redis压缩包 第二步:下载gcc-c 第三步:解压redis文件 第四步:进入redis-4.0.0.0目录执行make命令 第五步:安装redis到redis目录 第五步:复制redis.conf配置文件…

电脑开机LOGO修改教程_BIOS启动图片替换方法

准备工具:刷BIOS神器和change logo,打包下载地址:https://download.csdn.net/download/baiseled/89374686 一.打开刷BIOS神器,点击备份BIOS,保存到桌面 二.打开change logo,1.点击load image,选…

11-sentinel利用nacos作持久化

本文介绍sentinel配置数据的持久化方法。由于sentinel官方并没有提供持久化功能,大家在测试过程中也能发现sentinel服务重启后,原来配置的数据就丢了,本文就是来处理这一问题的。 做好心理准备,我们要修改sentinel的源代码&#…

Python 批量修改 Word 文档中图片的大小并居中对齐

Python 批量修改 Word 文档中图片的大小并居中对齐 错过,再遇见可能就难了!此时,你是你,我是我,再遇见,可就真的你是你,我是我,没有一丝的牵连纠缠—— !!! 对于已经编辑好的文档一定…

图表:调用FluentUI中的折线图散点图和饼状图

文章目录 0.文章介绍1.源码位置2.效果图3.代码3.1 代码结构3.2 main.qml3.3 MyLineChart.qml 0.文章介绍 调用项目FluentUI中的散点图、折线图和饼状图组件,做定制化改进。 项目FluentUI源码位置:https://github.com/zhuzichu520/FluentUI 项目FluentUI…

物联网产业链图谱_产业链全景图_物联网行业市场分析

物联网(IoT, Internet of Things)是通信网和互联网的拓展应用与网络延伸,它利用感知技术与智能装置对物理世界进行感知识别,通过网络传输互联,进行计算、处理和知识挖掘,实现人与物、物与物信息交互和无缝链接,达到对物…

springboot生成、响应图片验证码

我们平时经常会碰见图片验证码,那么在springboot中我们该怎么实现呢 我们可以使用一款开源的验证码生成工具EasyCaptcha,其支持多种类型的验证码,例如gif、中文、算术等,并且简单易用,具体内容可参考其官方文档。 效果…

网站SSL证书该如何更新?

网站SSL证书的更新是一个确保网站安全性的重要步骤。以下是一个详细的更新流程: 一、检查证书有效期 首先,需要定期检查SSL证书的有效期。通常情况下,SSL证书的有效期为一年,到期前需要进行更新。可以通过以下方式检查证书有效期…

证书|“机器学习工程师”来了,由工业和信息化部教育与考试中心颁发,含金量高

“机器学习工程师”职业技术考试是由工业和信息化部教育与考试中心推出人才考核标准,在互联网、零售、金融、电信、医学、旅游等行业均有涉及,是专门从事数据采集、数据分析、机器学习、人工智能并能制作业务报告、提供决策的新型数据分析人才所需要的技…

小程序滑动单元格

项目场景&#xff1a;小程序用户管理列表&#xff0c;通过单元格滑动实现“密码重置”、“删除”功能。 技术框架&#xff1a;uniapp、uview3、ts 效果如下&#xff1a; 前端页面&#xff1a; <template><view class"fui-wrap"><view class"f…

Ubuntu连接GitHub

报错&#xff1a;Please make sure you have the correct access rights and the repository exists.原因&#xff1a;本地没有SSH Key存在解决&#xff1a; 首先为系统设置github的用户名和自己的邮箱 git config --global user.name "****" git config --global us…

2024新型数字政府综合解决方案(一)

新型数字政府综合解决方案通过整合先进的数字技术和智能化系统&#xff0c;构建了一个高效、透明且响应迅速的政府服务平台&#xff0c;能够实现跨部门数据共享和实时信息更新。该解决方案包括智能数据分析、大数据平台和云计算服务&#xff0c;旨在提升政府决策的科学性和行政…

Transformer问题总结及实现

目录 前提&#xff1a; 注意&#xff1a;以下对于优化的问题&#xff0c;要回答这个问题&#xff1a;前一种方法的局限性在哪里&#xff0c;优化的方法是怎么进行优化的&#xff1f;&#xff08;未完全解决&#xff09; Step1:关于Transformer的疑问 Step2&#xff1a;关于…

初步认识Linux系统

前言 Linux系统具有许多优点&#xff0c;不仅系统性能稳定&#xff0c;而且是开源软件。其核心防火墙组件性能高效、配置简单&#xff0c;保证了系统的安全。在很多企业网络中&#xff0c;为了追求速度和安全&#xff0c;Linux不仅仅是被网络运维人员当作服务器使用&#xff0c…

FreeRTOS互斥量

文章目录 一、互斥量的使用场合二、互斥量函数1、创建2、其他函数 三、示例: 优先级继承四、递归锁1、死锁的概念2、自我死锁3、函数 怎么独享厕所&#xff1f;自己开门上锁&#xff0c;完事了自己开锁。 你当然可以进去后&#xff0c;让别人帮你把门&#xff1a;但是&#xff…