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

mybatis实现一个简单的CRUD功能的小案例(后端)编写流程

下面是一个使用mybatis实现增删改查功能的示例程序:

1.创建一个数据库

首先需要创建一个名为test_db的数据库,里面包含一个名为user_info的表,其中包含id、name、age三个字段。

2.配置mybatis

在项目的pom.xml文件中添加mybatis和mysql依赖:

<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.0</version> 
</dependency> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version>
</dependency>

在项目的resources目录下创建一个mybatis-config.xml文件,配置mybatis的环境和数据库连接信息:

<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/test_db?useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=GMT"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="mapper/UserMapper.xml"/></mappers>
</configuration>

其中,配置文件中的mapper/UserMapper.xml文件可以在下文中看到。

3.创建Java实体类

创建一个名为User的Java实体类,包含id、name、age三个属性,并添加getter和setter方法。

public class User {private int id;private String name;private int age;// getter和setter方法……
}

4.创建DAO接口

创建一个名为UserMapper的DAO接口,其中包含增删改查四个方法:

public interface UserMapper {// 添加用户public int addUser(User user);// 删除用户public int deleteUser(int id);// 修改用户信息public int updateUser(User user);// 查询用户信息public User getUser(int id);
}

5.编写mapper/UserMapper.xml文件

在resources/mapper目录下创建一个UserMapper.xml文件,该文件中实现UserMapper接口中所有方法的具体操作。

<mapper namespace="com.example.mapper.UserMapper"><!-- 添加用户操作 --><insert id="addUser" parameterType="com.example.entity.User" useGeneratedKeys="true" keyProperty="id">insert into user_info(name, age) values(#{name}, #{age})</insert><!-- 删除用户操作 --><delete id="deleteUser" parameterType="int">delete from user_info where id=#{id}</delete><!-- 修改用户操作 --><update id="updateUser" parameterType="com.example.entity.User">update user_info set name=#{name}, age=#{age} where id=#{id}</update><!-- 查询用户操作 --><select id="getUser" parameterType="int" resultType="com.example.entity.User">select id, name, age from user_info where id=#{id}</select></mapper>

6.测试

在main函数中使用Mybatis的sqlSession创建UserMapper实例,从而进行增删改查操作:

public static void main(String[] args) {// 加载Mybatis的配置文件String resource = "mybatis-config.xml";InputStream inputStream = null;try {inputStream = Resources.getResourceAsStream(resource);} catch (IOException e) {e.printStackTrace();}// 创建SqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过SqlSession创建UserMapper接口的代理对象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 添加用户User user = new User();user.setName("Tom");user.setAge(25);int rows = userMapper.addUser(user);sqlSession.commit();// 查询用户User getUser = userMapper.getUser(user.getId());// 修改用户getUser.setName("Jerry");rows = userMapper.updateUser(getUser);sqlSession.commit();// 删除用户rows = userMapper.deleteUser(getUser.getId());sqlSession.commit();// 关闭SqlSessionsqlSession.close();
}

以上就是使用mybatis实现crud功能的程序。

相关文章:

mybatis实现一个简单的CRUD功能的小案例(后端)编写流程

下面是一个使用mybatis实现增删改查功能的示例程序&#xff1a; 1.创建一个数据库 首先需要创建一个名为test_db的数据库&#xff0c;里面包含一个名为user_info的表&#xff0c;其中包含id、name、age三个字段。 2.配置mybatis 在项目的pom.xml文件中添加mybatis和mysql依…...

腾讯云轻量应用服务器价格表(2023版)

2023腾讯云轻量应用服务器2核2G4M带宽88元一年、2核4G6M带宽159元/年、4核8G10M优惠价425元、8核16G14M价格1249、16核32G20M服务器2499元一年&#xff0c;今天分享2023腾讯云服务器配置及精准报价。 腾讯云轻量应用服务器优惠价格表 腾讯云服务器分为轻量应用服务器和云服务器…...

网络层IP协议和数据链路层

目录IP协议协议头格式分片网段划分特殊的IP地址IP地址的数量限制NAT技术NAT技术背景NAT IP转换过程NAPTNAT技术的缺陷NAT和代理服务器私有IP地址和公网IP地址路由路由表生成算法数据链路层认识以太网以太网帧格式认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MT…...

零基础学习Java 03

目录 数组 动态初始化数组 静态初始化 数组的应用 数组两种典型的异常 length关键字求出数组的长度 数组遍历在IDEA中输出快捷语句 对象数组 数组的遍历&#xff1a;foreach方法 二维数组 枚举(enum) 数组 1在方法中可以返回一个数组&#xff0c;但是在定义方法时类型要…...

PG数据库超时退出 TCP设定

数据库在使用psql工具以及jdbc进行远程连接时&#xff0c;在经过一定时间之后报错-致命错误&#xff1a; terminating connection due to client no input timeout。 排查安全参数&#xff0c;hg_clientnoinput 0&#xff1b; 问题原因 操作系统TCP相关参数设置不正确&…...

每日学术速递4.4

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CL 1.Baize: An Open-Source Chat Model with Parameter-Efficient Tuning on Self-Chat Data 标题&#xff1a;Baize&#xff1a;一种对自聊天数据进行参数高效调优的开源聊天模型 作者…...

ChatGPT将引发大量而普遍的网络安全隐患

ChatGPT是一个基于人工智能的语言生成模型&#xff0c;它可以在任何给定的时间&#xff0c;使用自然语言生成技术&#xff0c;生成文本、对话和文章。它不仅可以被用来编写文本&#xff0c;还可以用来编写语言、生成图像和视频。目前&#xff0c; ChatGPT已广泛应用于语言翻译、…...

购买学生护眼台灯几瓦最好?有哪些推荐护眼灯

现今的近视已然成为普遍现象&#xff0c;而且有往低年龄段发展的趋势。究其原因&#xff0c;长期使用电子设备是一方面&#xff0c;还是就是我们日常工作、学习、生活没有很好的护眼环境&#xff0c;很多时候我们不经意的错误习惯&#xff0c;久而久之就有可能诱发近视。对孩子…...

什么是 SYN 攻击?如何避免 SYN 攻击?

SYN 攻击方式最直接的表现就会把 TCP 半连接队列打满&#xff0c;这样当 TCP 半连接队列满了&#xff0c;后续再在收到 SYN 报文就会丢弃&#xff0c;导致客户端无法和服务端建立连接。 避免 SYN 攻击方式&#xff0c;可以有以下四种方法&#xff1a; 调大 netdev_max_backlo…...

数据分析练习——学习一般分析步骤

目录 一、准备工作 二、导入库和数据 1、导入必要的库&#xff1a; 2、模拟数据 三、数据分析过程 1、读取数据&#xff1a; 2、数据概览和描述性统计&#xff1a; 2.1、查看数据概览&#xff1a; 2.2、查看描述性统计&#xff1a; 3、数据清洗&#xff1a; 3.1、处…...

Linux环境下挂载exfat格式U盘,以及安装exfat文件系统

目录Linux一般支持的文件系统有&#xff1a;1.安装exfat软件安装工具环境以及exfat件依赖的系统软件下载exfat源码包并安装2.挂载exfat格式U盘查看U盘在那个目录执行挂载命令Linux一般支持的文件系统有&#xff1a; 文件系统名称详情ext专门为Linux核心做的第一个文件系统&…...

网格布局grid

grid网格定义 css网格是一个用于web的二维&#xff08;行和列的组合&#xff09;布局&#xff0c;利用网格&#xff0c;你可以把内容按照行和列的格式进行排版&#xff0c;另外&#xff0c;可以轻松的实现复杂布局。 1.定义网格和fr单位 1.1定义网格 在父元素加上&#xff…...

《扬帆优配》环境更优!这类资金,迎利好!

近来&#xff0c;第一批主板注册制新股连续发动申购&#xff0c;网下询价中&#xff0c;组织出资者频繁现身打新商场&#xff0c;公募基金、社保基金、养老金、保险资金等中长时间资金&#xff0c;成为全面注册制下新股发行商场的重要参加者。 多位业内人士对此表明&#xff0c…...

RK3568平台开发系列讲解(内存篇)内存管理的相关结构体

🚀返回专栏总目录 文章目录 一、硬件架构二、Linux 物理内存管理结构体沉淀、分享、成长,让自己和他人都能有所收获!😄 📢应用程序想要使用内存,必须得先找操作系统申请,我们有必要先了解一下 Linux 内核怎么来管理内存,这样再去分析应用程序的内存管理细节的时候,…...

如何理解二叉树与递归的关系

二叉树一般都是和递归有联系的&#xff0c;二叉树的遍历包括了前序&#xff0c;后序&#xff0c;中序&#xff0c;大部分题目只要考虑清楚应该用那种遍历顺序&#xff0c;然后特殊情况的条件&#xff0c;题目就会迎刃而解。 1. 先来说说二叉树的遍历方式 其实二叉树的遍历很简…...

CSS 高级技巧

目录 1.精灵图 1.1为什么需要精灵图 1.2 精灵图&#xff08;sprites&#xff09;的使用 2.字体图标 2.1字体图标的产生 2.2字体图标的优点 2.3字体图标的下载 2.4字体图标的引入 2.5字体图标的追加 1.精灵图 1.1为什么需要精灵图 一个网站往往回应用很多的小背景图像作…...

ToBeWritten之MIPS汇编基础铺垫

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…...

MySQL数据库对数据库表的创建和DML操作

1&#xff0e;创建表user&#xff0c;其中包含id、name、password,其中主键自增&#xff0c;name&#xff0c;唯一是可变长度&#xff0c;最大长度是30&#xff0c;密码&#xff0c;可变长度&#xff0c;最大长度为20&#xff0c;不为空。 以下是创建符合要求的user表的SQL语句…...

【PCB专题】PCB 阻焊层(solder mask)与助焊层(paste mask)有什么区别

一块标准的印刷电路板 (PCB) 通常需要两种不同类型的“罩层 (mask)”。其中阻焊层 (solder mask) 和助焊层 (paste mask) 都是“罩层”,但在 PCB 制造过程中,它们分别用于两个完全不同的部分,因此也存在很大的区别。 阻焊层定义 阻焊层定义了电路板外表面的保护材料涂抹范围…...

ThreeJS-纹理旋转、重复(十一)

旋转 文档&#xff1a;three.js docs 关键代码&#xff1a; //设置旋转中心,默认左下角 docColorLoader.center.set(0.5,0.5); //围绕旋转中心逆时针旋转45度 docColorLoader.rotation Math.PI/4; 完整代码: <template> <div id"three_div"></div>…...

高效流畅的WindowsB站体验:BiliBili-UWP第三方客户端全方位指南

高效流畅的WindowsB站体验&#xff1a;BiliBili-UWP第三方客户端全方位指南 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端&#xff0c;当然&#xff0c;是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 作为一名Windows平台的B站用户&…...

基于Matlab的FFT信号分析:解锁Simulink波形数据谐波秘密

基于matlab的FFT信号分析 &#xff08;1&#xff09;实现对simulink模型中示波器的波形数据进行谐波分析 &#xff08;2&#xff09;图1是matlab的信号给定仿真模型&#xff0c;用于将需要分析的波形数据导入到workspace。 &#xff08;3&#xff09;图2是FFT程序运行结果&…...

5个技巧让普通鼠标在Mac上秒变专业工具:Mac Mouse Fix深度解析

5个技巧让普通鼠标在Mac上秒变专业工具&#xff1a;Mac Mouse Fix深度解析 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾为Mac上的鼠标体验感到沮…...

10倍加速PDF转HTML:pdf2htmlEX终极优化指南

10倍加速PDF转HTML&#xff1a;pdf2htmlEX终极优化指南 【免费下载链接】pdf2htmlEX Convert PDF to HTML without losing text or format. 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2htmlEX pdf2htmlEX是一款能够将PDF文件转换为HTML格式的强大工具&#xff0c…...

ZLPhotoBrowser错误处理机制:构建稳定可靠的iOS图片选择器终极指南

ZLPhotoBrowser错误处理机制&#xff1a;构建稳定可靠的iOS图片选择器终极指南 【免费下载链接】ZLPhotoBrowser Wechat-like image picker. Support select photos, videos, gif and livePhoto. Support edit image and crop video. 微信样式的图片选择器&#xff0c;支持预览…...

DeepFace模型管理终极指南:告别首次运行等待的3种快速方案

DeepFace模型管理终极指南&#xff1a;告别首次运行等待的3种快速方案 【免费下载链接】deepface A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python 项目地址: https://gitcode.com/GitHub_Trending/de/de…...

嵌入式Telnet服务器库:轻量级MCU远程调试方案

1. TelnetServer 库概述TelnetServer 是一个轻量级、可移植的嵌入式 Telnet 服务器实现库&#xff0c;专为资源受限的 MCU 环境设计。它不依赖 POSIX socket API 或完整 TCP/IP 协议栈抽象层&#xff08;如 LwIP 的 netconn 接口&#xff09;&#xff0c;而是直接对接底层网络驱…...

Redis非主键索引查询实践,网友推荐:高效数据检索新方案

最近&#xff0c;关于使用Redis进行非主键查询的话题在开发者社区中引起了新的讨论。2024年7月&#xff0c;有技术博主分享了一套基于Redis Sorted Set和Hash的组合索引方案&#xff0c;声称在处理千万级用户数据的场景下&#xff0c;查询延迟降低了近70%。同年早些时候&#x…...

Empire渗透测试框架深度解析:如何构建无文件攻击链的实战指南

Empire渗透测试框架深度解析&#xff1a;如何构建无文件攻击链的实战指南 【免费下载链接】Empire EmpireProject/Empire: Empire 是一个开源的Post-Exploitation框架&#xff0c;主要用于渗透测试后的操作阶段&#xff0c;通过模块化的设计实现远程命令执行、持久化连接、凭证…...

Windows 11 LTSC系统如何安全添加微软商店:完整解决方案指南

Windows 11 LTSC系统如何安全添加微软商店&#xff1a;完整解决方案指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 如果你正在使用Windows 11 24…...