MyBatis之增删查改功能
文章目录
- 一、创建各种类
- 二、MyBatis的各种功能
- 1、查询<select>
- 2、增加<insert>
- 3、修改<update>
- 4、删除<delete>
- 三、总结
前言
在MyBatis项目中编写代码实现对MySql数据库的增删查改
一、创建各种类
1、在Java包的mapper文件下创建一个接口
我创建的接口名为:SelectMapper,
注意:接口名之后要和写sql的xml文件名保持一致
这个接口专门用来写增删查改的方法,和sql分离开

2、在resources包的mapper文件下创建一个xml文件
我的xml文件名为SelectMapper,和接口名保持一致
这个xml文件专门用来写sql语句

3、在text包的java文件下创建一个测试类
我的测试类名为SelectMapperText,这个名称没有固定的要求
这个测试类专门用来测试对数据库的操作是否成功

二、MyBatis的各种功能
在stu库下有一张名为User的表,下面对这张表进行各种功能实现

1、查询功能<select>
查询User表所有用户的信息
因为查询的内容返回的数据不止一条,因此我们用List集合作为返回值
SelectMapeer接口下定义方法名:List<User> getAllUser()
public interface SelectMapper {/*若查询多条,不能用实体类对象为返回值,否则报错*///查询所有信息List<User> getAllUser();}
SelectMapper的xml文件下写sql语句
<?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.mybatis.mapper.SelectMapper"><!-- List<User> getAllUser();--><select id="getAllUser" resultType="User">select *from user</select></mapper>
注意:mapper的namespace必须对应接口名,select的id必须是我们写的方法名,两个必须要一样。查询结果需要返回,因此有resultType为实体类名
SelectMapperText类开始测试
import com.mybatis.Util.SqlSessionUtil;
import com.mybatis.mapper.SelectMapper;
import com.mybatis.pojo.User;
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 org.junit.Test;import javax.crypto.spec.PSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;public class SelectMapperText {@Testpublic void getAllUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);List<User> allUser = mapper.getAllUser();allUser.forEach(s-> System.out.println(s));}}
运行getAllUser后为:

成功查到所有用户信息!!!
2、增加功能<insert>
向User表增加一个用户,用户信息为:
用户名:sb,密码:123456,年龄:20,性别:男,邮件:123456@qq.com
SelectMapeer接口下定义方法名:void insertUser(User user);
package com.mybatis.mapper;import com.mybatis.pojo.User;
import org.apache.ibatis.annotations.Param;import java.util.List;
import java.util.Map;public interface SelectMapper {//查询所有信息List<User> getAllUser();//插入用户信息void insertUser(User user);
}
SelectMapper的xml文件下写sql语句
<?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.mybatis.mapper.SelectMapper"><!-- List<User> getAllUser();--><select id="getAllUser" resultType="User">select *from user</select><!-- void insertUser(User user);--><insert id="insertUser">insert into user values (null,#{username},#{password},#{age},#{sex},#{email})</insert></mapper>
SelectMapperText类开始测试
import com.mybatis.Util.SqlSessionUtil;
import com.mybatis.mapper.SelectMapper;
import com.mybatis.pojo.User;
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 org.junit.Test;import javax.crypto.spec.PSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;public class SelectMapperText {@Testpublic void getAllUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);List<User> allUser = mapper.getAllUser();allUser.forEach(s-> System.out.println(s));}@Testpublic void insertUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);User user = new User(null,"sb","123456",20,"男","123456@qq.com");mapper.insertUser(user);}}

成功添加用户信息!!!
3、修改功能<update>
修改用户名为admin的信息,将性别改为女
SelectMapeer接口下定义方法名: void updateUser(String username)
package com.mybatis.mapper;import com.mybatis.pojo.User;
import org.apache.ibatis.annotations.Param;import java.util.List;
import java.util.Map;public interface SelectMapper {//查询所有信息List<User> getAllUser();//插入用户信息void insertUser(User user);//修改用户信息void updateUser(@Param("username") String username);//用注释当sql名
}
SelectMapper的xml文件下写sql语句
<?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.mybatis.mapper.SelectMapper"><!-- List<User> getAllUser();--><select id="getAllUser" resultType="User">select *from user</select><!-- void insertUser(User user);--><insert id="insertUser">insert into user values (null,#{username},#{password},#{age},#{sex},#{email})</insert><!-- void updateUser(@Param("username") String username);--><update id="updateUser">update user set sex = '女' where username=#{username}</update></mapper>
SelectMapperText类开始测试
import com.mybatis.Util.SqlSessionUtil;
import com.mybatis.mapper.SelectMapper;
import com.mybatis.pojo.User;
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 org.junit.Test;import javax.crypto.spec.PSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;public class SelectMapperText {@Testpublic void getAllUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);List<User> allUser = mapper.getAllUser();allUser.forEach(s-> System.out.println(s));}@Testpublic void insertUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);User user = new User(null,"sb","123456",20,"男","123456@qq.com");mapper.insertUser(user);}@Testpublic void updateUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);mapper.updateUser("admin");}}
成功修改用户信息!!!
4、删除功能<update>
删除用户为“root”的所有信息
SelectMapeer接口下定义方法名:void deleteUser(String username)
package com.mybatis.mapper;import com.mybatis.pojo.User;
import org.apache.ibatis.annotations.Param;import java.util.List;
import java.util.Map;public interface SelectMapper {//查询所有信息List<User> getAllUser();//插入用户信息void insertUser(User user);//修改用户信息void updateUser(@Param("username") String username);//用注释当sql名//删除用户信息void deleteUser(@Param("username") String username);
}
SelectMapper的xml文件下写sql语句
<?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.mybatis.mapper.SelectMapper"><!-- List<User> getAllUser();--><select id="getAllUser" resultType="User">select *from user</select><!-- void insertUser(User user);--><insert id="insertUser">insert into user values (null,#{username},#{password},#{age},#{sex},#{email})</insert><!-- void updateUser(@Param("username") String username);--><update id="updateUser">update user set sex = '女' where username=#{username}</update><!-- void deleteUser(@Param("username") String username)--><delete id="deleteUser">delete from user where username = #{username}</delete>
</mapper>
SelectMapperText类开始测试
import com.mybatis.Util.SqlSessionUtil;
import com.mybatis.mapper.SelectMapper;
import com.mybatis.pojo.User;
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 org.junit.Test;import javax.crypto.spec.PSource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;public class SelectMapperText {@Testpublic void getAllUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);List<User> allUser = mapper.getAllUser();allUser.forEach(s-> System.out.println(s));}@Testpublic void insertUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);User user = new User(null,"sb","123456",20,"男","123456@qq.com");mapper.insertUser(user);}@Testpublic void updateUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);mapper.updateUser("admin");}@Testpublic void deleteUser() throws IOException {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sessionFactory.openSession(true);SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);mapper.deleteUser("root");}
}

成功删除用户信息!!!
三、总结
首先创造好接口写入要进行的方法名,然后创建xml文件专门写sql语句,值得注意的是:namespace要和接口名相同,id名要和接口里面的方法名相同,在测试类中:先获取映射文件,然后创建数据会议工厂生成数据会议,最后创建mapper使用接口的函数。
总之流程为:
1、创建接口写方法名。
2、创建xml文件写sql语句。
3、测试类进行测试
如果本篇文章对你有用的话,请一键三连支持一下博主,一起共同学习共同进步!!!
相关文章:
MyBatis之增删查改功能
文章目录 一、创建各种类二、MyBatis的各种功能 1、查询<select>2、增加<insert>3、修改<update>4、删除<delete>三、总结 前言 在MyBatis项目中编写代码实现对MySql数据库的增删查改 一、创建各种类 1、在Java包的mapper文件下创建一个接口 我创建…...
Leetcode算法入门与数组丨5. 数组二分查找
文章目录 1 二分查找算法2 二分查找细节3 二分查找两种思路3.1 直接法3.2 排除法 1 二分查找算法 二分查找算法是一种常用的查找算法,也被称为折半查找算法。它适用于有序数组的查找,并通过将待查找区间不断缩小一半的方式来快速定位目标值。 算法思想…...
拓扑关系如何管理?
在设备对接涂鸦的云端过程中,一部分设备由于自身资源或硬件配置,无法直接连接云端。而是需要通过网关进行中转,由网关代理实现和云端进行数据交互,间接实现设备接入云端。这样的设备也称为子设备。 要想实现网关代理子设备接入云…...
vue的由来、vue教程和M-V-VM架构思想、vue的使用、nodejs
vue vue的由来 vue教程和M-V-VM架构思想 vue的初步简单使用 nodejs vue的由来 # 1 HTML(5)、CSS(3)、JavaScript(ES5、ES6、ES11):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 ->…...
课程表 循环依赖 拓扑排序 go语言
学会拓扑排序题目的基本解法 res数组 记录上课顺序g 记录学了课程i 能解锁的课程jindeg 记录每个课程的入度q 记录入度为0的课程 for循环q去解放其他课程 本题来自力扣课程表 func findOrder(numCourses int, prerequisites [][]int) []int {res : []int{}//建一个二维数组记…...
【红包雨接口设计】
一、服务器地址 http://rb.atguigu.cn 二、公共请求头参数 参数名称类型是否必选描述tokenString是用户唯一标识 备注:为了方便我们今天演示,服务端接受所有token。 三、接口 1. 创建红包雨 请求方式:GET请求地址:/api/v1/se…...
SSL证书到期更换证书会影响排名吗?
在现代的数字化时代,网络安全和用户体验成为了网站运营商和开发者们需要高度关注的问题。SSL证书作为一种重要的安全协议,对网站的安全性和用户信任起着至关重要的作用。然而,随着SSL证书的有效期限届满,许多网站运营商面临着更换…...
前端常用库之-JavaScript工具库lodash
文章目录 前端常用库之-JavaScript工具库lodash一、什么是lodash二、安装三、lodash使用Lodash 的 pick() 函数介绍和使用react 实例demo:pick结合...展开运算符(spread operator) 前端常用库之-JavaScript工具库lodash 一、什么是lodash 官网: https:…...
Linux- execve()
execve() 是 Linux/UNIX 中的 exec 函数家族中的一个,它允许进程执行一个新的程序。具体地,execve() 替换当前进程的映像为新的程序映像。 函数原型如下: int execve(const char *pathname, char *const argv[], char *const envp[]);pathn…...
007 数据结构_堆——“C”
前言 本文将会向您介绍关于堆Heap的实现 具体步骤 tips:本文具体步骤的顺序并不是源代码的顺序 typedef int HPDataType; typedef struct Heap {HPDataType* _a;int _size;int _capacity; }Heap;初始化 void HeapCreate(Heap* hp, HPDataType* a, int n) {hp-&…...
zabbix的原理与安装
一、Zabbix介绍 1、zabbix 是什么? zabbix是一个开源的IT基础监控软件,能实时监控网络服务,服务器和网络设备的状态,如网络使用,CPU负载、磁盘空间等,主要是包括数据的收集、报警和通知的可视化界面zabbi…...
ReactNative中升级IOS 17版本Crash解决
ReactNative中升级IOS 17版本Crash解决 ReactNative中升级IOS 17版本Crash解决一、问题描述二、原因分析三、解决方案决策3.1 设置宽高为非零值3.2 使用新的UIGraphicsImageRenderer替换就版本的UIGraphicsBeginImageContext 四、可能使用到该API的三方库4.1 react-native-fast…...
MongoDB详解
一、MongoDB概述 MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一…...
【SpringCloud微服务全家桶学习笔记-服务注册zookeeper/consul】
SpringCloud微服务全家桶学习笔记 Eureka服务注册 gitee码云仓库 9.其他服务注册框架 (1)zookeeper安装与使用 zookeeper需安装在虚拟机上,建议使用CentOS,安装地址如下: zookeeper镜像源 选择第一个进入后下载ta…...
【滑动窗口】LCR 016. 无重复字符的最长子串
LCR 016. 无重复字符的最长子串 解题思路 窗口内的字符串就是不重复子串每次遇到新的字符 看看窗口内是否存在该字符 如果存在直接剔除 然后调整窗口左边界不存在 添加窗口内部 右边界 class Solution {public int lengthOfLongestSubstring(String s) {if(s.length() < …...
C++中将类成员函数作为变量传递给函数
假设类ClassName有一个成员函数 void ClassName::funcname(int);通过typedef定义一个类成员函数指针类型,参数和返回值类型都要与成员函数对应 typedef void (ClassName::*FuncPtr)(int); // 定义类成员函数指针获取到的参数就是 FuncPtr pf...
2024届数字IC设计秋招面经-鼎信
背景 985硕士,计算机科班,实验室做cpu设计和fpga算法加速,我做处理器安全方向,有项目。 投递 8.25 没有笔试,两轮面试,直接通知下周一面试,草草的准备了下。 一面 技术面 9.4 不到半小时 …...
【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法
💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...
前馈神经网络(FFNN)和多层感知机(MLP)
多层感知器(MLP, Multi-Layer Perceptron)和前馈神经网络(Feed-Forward Neural Network, FFNN)是深度学习中两个经常被使用的术语,它们经常被互换使用。让我们详细地了解这两个术语: 多层感知器 (MLP): M…...
EasySwipeMenuLayout - 独立的侧滑删除
官网 GitHub - anzaizai/EasySwipeMenuLayout: A sliding menu library not just for recyclerview, but all views. 项目介绍 A sliding menu library not just for recyclerview, but all views. Recommended in conjunction with BaseRecyclerViewAdapterHelper Feature…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

