当前位置: 首页 > news >正文

MyBatis - 05 - 封装SqlSessionUtil工具类(用于获取SqlSession对象)并测试功能

文章目录

    • 1.新建SqlSessionUtils工具类
    • 2.编写静态方法
    • 3.项目结构及代码
      • 项目结构
      • 数据库和表
      • pom.xml
      • ParameterMapper接口:
      • User类:
      • ParameterMapper.xml
      • jdbc.properties
      • log4j.xml:
      • mybatis-config.xml:
      • ParameterMapperTest测试类:
      • 测试结果

1.新建SqlSessionUtils工具类

在这里插入图片描述

2.编写静态方法

SqlSessionUtils类:

package com.rqs.mybatis.utils;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 SqlSessionUtils {public static SqlSession getSqlSession() {SqlSession sqlSession = null;try {InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);sqlSession = sqlSessionFactory.openSession(true);} catch (IOException e) {e.printStackTrace();}return sqlSession;}
}

在这里插入图片描述

3.项目结构及代码

项目结构

在这里插入图片描述

数据库和表

在这里插入图片描述

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.rqs.mybatis</groupId><artifactId>MyBatis_demo2</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><!-- Mybatis核心 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!-- junit测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.3</version></dependency><!-- log4j日志 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies></project>

ParameterMapper接口:

package com.rqs.mybatis.mapper;import com.rqs.mybatis.pojo.User;import java.util.List;public interface ParameterMapper {/*** 查询所有员工信息*/List<User> getAllUser();
}

User类:

package com.rqs.mybatis.pojo;public class User {private Integer id;private String username;private String password;private Integer age;private String gender;private  String email;public User() {}public User(Integer id, String username, String password, Integer age, String gender, String email) {this.id = id;this.username = username;this.password = password;this.age = age;this.gender = gender;this.email = email;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", age=" + age +", gender='" + gender + '\'' +", email='" + email + '\'' +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}

ParameterMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.rqs.mybatis.mapper.ParameterMapper"><!--    List<User> getAllUser();--><select id="getAllUser" resultType="user">select * from t_user</select></mapper>

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"><param name="Encoding" value="UTF-8" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS}
%m  (%F:%L) \n" /></layout></appender><logger name="java.sql"><level value="debug" /></logger><logger name="org.apache.ibatis"><level value="info" /></logger><root><level value="debug" /><appender-ref ref="STDOUT" /></root>
</log4j:configuration>

mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--    MyBatis核心配置文件,标签的顺序properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?--><properties resource="jdbc.properties"></properties><!--设置类型别名,大小写不敏感。如果不设置alias,则默认为类名(大小写不敏感)--><typeAliases><!--typeAlias: 设置某个类型的别名属性:type 设置需要设置别名的类型alias 设置某个类型的别名,如果不设置该属性,那么该类型拥有默认的类名,且不区分大小写--><!--<typeAlias type="com.rqs.mybatis.pojo.User" alias="User"></typeAlias>--><!--推荐以包为单位,将包下所有的类型设置默认的类型别名且不区分大小写--><package name="com.rqs.mybatis.pojo"/></typeAliases><!--设置连接数据库的环境--><!--每一个environment都是具体连接数据库的环境--><!--一个项目中只会用一个环境,default用于使用默认使用的环境:id:表示连接数据库的环境的唯一标识 不能重复--><environments default="development"><!--transactionmanager:设置事务管理方式属性:type="JDBC/MANAGED"JDBC: 在当前环境中,执行sql时,使用的时jdbc原声的事务管理方式,需要手动的提交和回滚事务MANAGED:被管理,例如Spring--><environment id="development"><transactionManager type="JDBC"/><!--        dataSource:配置数据源属性"type:设置数据源的类型type=""POOLED:表示使用数据库连接池缓存数据库连接UNPOOLED:表示不使用数据库连接池JNDI:表示使用上下文中的数据源--><dataSource type="POOLED"><!--设置连接数据库的驱动--><property name="driver" value="${jdbc.driver}"/><!--设置连接地址--><property name="url" value="${jdbc.url}"/><!--注意:如果在建sql表单的时候选了字符集(如utf8),这里的value要改成:value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"--><!--用户名和密码--><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--引入映射文件--><mappers><!--推荐以包为单位引入映射文件,要求:1。 mapper接口所在的包要和映射文件所在的包一致2。 mapper接口要和映射文件的名字一致--><!--        com.rqs.mybatis.mapper创建包时要用/分隔,这样才是目录,否则这整一个就只是文件夹名字而已--><package name="com.rqs.mybatis.mapper"/></mappers>
</configuration>

ParameterMapperTest测试类:

package com.rqs.mybatis.test;import com.rqs.mybatis.mapper.ParameterMapper;
import com.rqs.mybatis.pojo.User;
import com.rqs.mybatis.utils.SqlSessionUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;import java.util.List;public class ParameterMapperTest {@Testpublic void getAllUser() {SqlSession sqlSession = SqlSessionUtils.getSqlSession();ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);List<User> allUser = mapper.getAllUser();for(int i=0; i<allUser.size(); i++){System.out.println(allUser.get(i));}}
}

测试结果

在这里插入图片描述

相关文章:

MyBatis - 05 - 封装SqlSessionUtil工具类(用于获取SqlSession对象)并测试功能

文章目录1.新建SqlSessionUtils工具类2.编写静态方法3.项目结构及代码项目结构数据库和表pom.xmlParameterMapper接口&#xff1a;User类&#xff1a;ParameterMapper.xmljdbc.propertieslog4j.xml:mybatis-config.xml:ParameterMapperTest测试类&#xff1a;测试结果1.新建Sql…...

Java中BIO、NIO和AIO的区别和应用场景

IO的方式通常分为几种&#xff0c;同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 一、BIO 在JDK1.4出来之前&#xff0c;我们建立网络连接的时候采用BIO模式&#xff0c;需要先在服务端启动一个ServerSocket&#xff0c;然后在客户端启动Socket来对服务端进行通信&#…...

Python安装教程(附带安装包)

首先&#xff0c;打开python安装包的下载地址&#xff0c;https://www.python.org/downloads/&#xff0c;会有些慢 点击downloads中的windows 左侧是稳定的版本&#xff0c;我这边下的是3.8的&#xff0c;不想去官网下载的可以直接用我下载的这个3.8版本&#xff0c;https://…...

华为OD机试用Python实现 -【信号发射和接收】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲信号发射和接收题目描述输入描述输出描述说明示例一输入输出说明示例二输入输出说明Python 代码实现代码运行结果代码编写思路华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为…...

Springboot整合 Thymeleaf增删改查一篇就够了

很早之前写过Thymeleaf的文章&#xff0c;所以重新温习一下&#xff0c;非前后端分离&#xff0c;仅仅只是学习 官网&#xff1a; https://www.thymeleaf.org/ SpringBoot可以快速生成Spring应用&#xff0c;简化配置&#xff0c;自动装配&#xff0c;开箱即用。 JavaConfigur…...

BigScience bloom模型

简介项目叫 BigScience,模型叫 BLOOM,BLOOM 的英文全名代表着大科学、大型、开放科学、开源的多语言语言模型。拥有 1760 亿个参数的模型.BLOOM 是去年由 1000 多名志愿研究人员,学者 在一个名为“大科学 BigScience”的项目中创建的.BLOOM 和今天其他可用大型语言模型存在的一…...

Squid服务的缓存概念

Squid缓存概念 squid是一个缓存服务器的守护进程 之前涉及的缓存服务&#xff1a;redis 2-8原则&#xff1a;80%的访问就是从20%的数据提供的&#xff1b;因此把20%的数据给到缓存–>完美解决等待时间&#xff1b; nginx是没有缓存的服务的&#xff1b;那么专业的事情就…...

Hadoop YARN

目录Hadoop YARN介绍Hadoop YARN架构、组件程序提交YARN交互流程YARN资源调度器Scheduler调度器策略FIFO SchedulerCapacity SchedulerFair SchedulerHadoop YARN介绍 YARN是一个通用资源管理系统和调度平台&#xff0c;可为上层应用提供统一的资源管理和调度 上图&#xff1…...

使用 Macrobenchmark 测试 Android 应用性能

etpack Compose 是推荐用于构建原生 Android 界面的新工具包。后续简称Jetpack Compose为Compose。在了解State之前需要先对Compose及申明性编程式有个大概的了解。State初体验好了&#xff0c;在你有一定了解的基础上&#xff0c;我们先来运行几个Demo&#xff0c;初步了解为何…...

【django】django-simpleui配置后,后台显示空白页解决方法

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 django后台显示空白页解决方法 1. 正文 添加完simpleui以后&#xff0c;后台显示一片空白&#xff0c;一脸问号&#xff1f;&#xff1f;&#xff1f; …...

【035】基于Vue的电商推荐管理系统(含源码数据库、超详细论文)

摘 要&#xff1a;基于Vue&#xff0b;Nodejs&#xff0b;mysql的电商推荐管理系统&#xff0c;这个项目论文超详细&#xff0c;er图、接口文档、功能展示、技术栈等说明特别全&#xff01;&#xff01;&#xff01; &#xff08;文末附源码数据库、课设论文获取方式&#xff0…...

【c++】模板1—函数模板

文章目录函数模板语法函数模板注意事项案例—数组选择排序普通函数和函数模板的区别普通函数和函数模板调用规则模板的局限性函数模板语法 函数模板作用&#xff1a; 建立一个通用函数&#xff0c;其函数返回值类型和形参类型可以不具体制定&#xff0c;用一个虚拟的类型来代表…...

windows10 wsl子系统固定ip启动分配网卡法

WSL设置添加固定IP 在Win端添加一个固定IP 192.168.50.99 用于X-Server界面显示.在WSL端添加一个固定IP 192.168.50.16 用于和Win端通讯 在win端创建批处理文件 创建一个批处理文件 我的文件位置是D:\powershell\static_ip.bat 向vEthernet (WSL)网卡添加一个IP 192.168.50.…...

ARM+Linux日常开发笔记

ARMLinux开发命令 文章目录ARMLinux开发命令一、虚拟机1.ssh服务项目2.文件相关3.系统相关4. 虚拟机清理内存二、ARM核板1.设备重启三、调试1. 应该调试一、虚拟机 1.ssh服务项目 启动ssh服务 sudo /etc/init.d/ssh restart2.文件相关 查看文件大小显示kb ll -h 查看目录文件…...

在线文档技术-编辑器篇

这是在线文档技术的第二篇文章&#xff0c;本文将对目前市面上所有的主流编辑器和在线文档进行一次深入的剖析和研究&#xff0c;从而使大家对在线文档技术有更深入的了解&#xff0c;也让更多人能够参与其开发与设计中来。 注意&#xff1a;出于对主流文档产品的尊重&#xf…...

top -p pid为什么超过100%

CPU&#xff1a;Cores, and Hyper-Threading 超线程&#xff08;Hyper-Threading &#xff09; 超线程是Intel最早提出一项技术&#xff0c;最早出现在2002年的Pentium4上。单个采用超线程的CPU对于操作系统来说就像有两个逻辑CPU&#xff0c;为此P4处理器需要多加入一个Logic…...

#高光谱图像分类#:分类的方法有哪些?

高光谱图像分类方法可以根据分类粒度的不同分为基于像素的分类和基于对象的分类 高光谱图像分类方法可以根据分类粒度的不同分为基于像素的分类和基于对象的分类。 基于像素的分类&#xff1a;这种分类方法是针对每个像素进行分类&#xff0c;将像素的光谱信息作为输入特征&am…...

观察者模式

观察者模式常常用于以下场景&#xff1a;事件驱动系统&#xff1a;当事件发生时&#xff0c;通知所有对该事件感兴趣的观察者。发布/订阅模型&#xff1a;一个主题&#xff08;发布者&#xff09;可以有多个订阅者&#xff08;观察者&#xff09;&#xff0c;当主题发生改变时&…...

前端组件库自定义主题切换探索-03-webpack-theme-color-replacer webpack 同时替换多个颜色改造

接上一篇《前端组件库自定义主题切换探索-02-webpack-theme-color-replacer webpack 的实现逻辑和原理-02》 这篇我们来开始改造&#xff0c;让这个插件最终能达到我们的目的&#xff1a; 首先修改plugin.config.js。 插件首先要在vue.config.js引用注册&#xff0c;因此先对…...

Redis高级-主从复制相关操作

2.1 主从复制简介 2.1.1 高可用 首先我们要理解互联网应用因为其独有的特性我们演化出的三高架构 高并发 应用要提供某一业务要能支持很多客户端同时访问的能力&#xff0c;我们称为并发&#xff0c;高并发意思就很明确了 高性能 性能带给我们最直观的感受就是&#xff1a;速…...

2026年江苏省职业院校技能大赛(学生组)信息安全管理与评估(技能操作阶段)竞赛样题

2026年江苏省职业院校技能大赛&#xff08;学生组&#xff09;信息安全管理与评估&#xff08;技能操作阶段&#xff09;竞赛样题 文章目录2026年江苏省职业院校技能大赛&#xff08;学生组&#xff09;信息安全管理与评估&#xff08;技能操作阶段&#xff09;竞赛样题任务1&a…...

STM32串口环形队列IAP固件更新方案

基于STM32串口环形队列的IAP实现方案1. 项目概述1.1 系统架构本方案实现了一种基于STM32F103C8T6微控制器的串口IAP(In-Application Programming)系统&#xff0c;采用环形队列缓冲机制解决有限SRAM空间下的固件更新问题。系统将64KB Flash空间划分为四个功能区域&#xff1a;B…...

新手避坑指南:用DJI NAZA-LITE飞控组装F450无人机,从焊接电调到GPS校准的完整流程

新手避坑指南&#xff1a;用DJI NAZA-LITE飞控组装F450无人机&#xff0c;从焊接电调到GPS校准的完整流程 第一次组装无人机就像玩一场高风险的拼图游戏——每个零件的位置、每根接线的顺序都可能影响最终能否安全起飞。作为过来人&#xff0c;我清楚地记得焊接电调时锡珠飞溅的…...

FLUX.1-dev LoRA微调指南:基于像素幻梦输出数据集训练专属风格

FLUX.1-dev LoRA微调指南&#xff1a;基于像素幻梦输出数据集训练专属风格 1. 前言&#xff1a;为什么需要LoRA微调 在像素艺术创作领域&#xff0c;每个艺术家都渴望拥有独特的视觉风格。FLUX.1-dev作为当前最先进的扩散模型&#xff0c;配合像素幻梦(Pixel Dream Workshop)…...

Qwen1.5-0.5B-Chat电商应用:商品咨询机器人搭建教程

Qwen1.5-0.5B-Chat电商应用&#xff1a;商品咨询机器人搭建教程 1. 引言&#xff1a;为什么需要一个轻量级商品咨询机器人&#xff1f; 想象一下&#xff0c;你经营着一家网店&#xff0c;每天有成百上千的顾客涌入。他们的问题五花八门&#xff1a;“这件衣服有L码吗&#x…...

Leptin30;YQQVLTSLPSQNVLQIANDLENLRDLLHLL (mouse)

一、基本信息名称&#xff1a; Leptin30&#xff08;小鼠源瘦素功能片段肽&#xff09;单字母序列&#xff1a; YQQVLTSLPSQNVLQIANDLENLRDLLHLL三字母序列&#xff1a; Tyr-Gln-Gln-Val-Leu-Thr-Ser-Leu-Pro-Ser-Gln-Asn-Val-Leu-Gln-Ile-Ala-Asn-Asp-Leu-Glu-Asn-Leu-Arg-Asp…...

杭州做生成式引擎优化的服务公司有哪些?

杭州做生成式引擎优化的服务公司有哪些&#xff1f; 一、行业背景&#xff1a;GEO已成为AI时代企业增长的核心基建 生成式引擎优化&#xff08;GEO&#xff0c;Generative Engine Optimization&#xff09;&#xff0c;是针对大语言模型的检索逻辑与回答规则&#xff0c;优化企…...

你的产品过不了EMC测试?很可能是电源接口这3个PCB布局坑没避开

电源接口EMC设计避坑指南&#xff1a;PCB布局中的三个致命细节 当你的产品在EMC测试中屡屡碰壁时&#xff0c;问题往往不在于防护电路设计本身&#xff0c;而是隐藏在PCB布局的细微之处。许多工程师精心设计了符合规范的防护拓扑&#xff0c;却在传导骚扰测试中遭遇滑铁卢。本文…...

告别迷茫!Java程序员入门AI的完整学习地图

文章目录前言一、先破三个心魔&#xff1a;Java搞AI到底靠不靠谱&#xff1f;心魔一&#xff1a;AI都是Python的天下&#xff0c;Java只能看戏&#xff1f;心魔二&#xff1a;必须得回炉重造学数学&#xff1f;心魔三&#xff1a;要从Hello World开始学Python&#xff1f;二、J…...

如何打造个人游戏云:5步掌握Sunshine跨平台串流技术

如何打造个人游戏云&#xff1a;5步掌握Sunshine跨平台串流技术 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器&#xff0c;支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine…...