【Mybatis篇】Mybatis的注解开发
🧸安清h:个人主页
🎥个人专栏:【计算机网络】,【Mybatis篇】
🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。
文章目录
🎯 @Select注解
🚦 创建数据表worker
🚦创建持久化类Worker
🚦创建接口WorkerMapper
🚦核心配置文件
🚦测试类及测试方法
🎯@Insert注解
🚦示例
✨接口类编写
✨测试方法
🎯@Update注解
🚦示例
✨接口类编写
✨测试方法
🎯@Delete注解
🚦示例
✨接口类编写
✨测试方法
🎯@Param注解
🚦示例
✨接口类编写
✨测试方法
🎯 @Select注解
@Select
注解是 MyBatis 框架中用于执行查询语句的注解,通常用于映射 SQL 查询语句到 Java 方法上。在 MyBatis 中,注解是一种将 SQL 语句直接嵌入到 Java 代码中的便捷方式,而不需要使用 XML 配置文件。
下面通过一个例子来展示其用法。
🚦 创建数据表worker
create table worker(id int auto_increment primary key ,name varchar(100),age int,sex varchar(50),worker_id int UNIQUE
);
insert into worker(name,age,sex,worker_id) values ('丽丽',18,'女',1001);
insert into worker(name,age,sex,worker_id) values ('刚刚',24,'男',1002);
insert into worker(name,age,sex,worker_id) values ('甜甜',21,'女',1003);
🚦创建持久化类Worker
public class Worker {private Integer id;private String name;private Integer age;private String sex;private Integer worker_id;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Integer getWorker_id() {return worker_id;}public void setWorker_id(Integer worker_id) {this.worker_id = worker_id;}@Overridepublic String toString() {return "Worker{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +", worker_id=" + worker_id +'}';}
}
🚦创建接口WorkerMapper
public interface WorkerMapper {@Select("select * from worker where id=#{id}")public Worker findAllById(int id);
}
🚦核心配置文件
<mappers><mapper class="com.haust.dao.WorkerMapper"/></mappers>
🚦测试类及测试方法
@Testpublic void testFind(){SqlSession sqlSession=MyBatisUtil.getSession();WorkerMapper workerMapper=sqlSession.getMapper(WorkerMapper.class);Worker worker=workerMapper.findAllById(1);System.out.println(worker.toString());sqlSession.close();}
🎯@Insert注解
@Insert
注解用于映射 SQL 的插入语句。当需要向数据库表中插入一条新记录时,可以使用此注解。如果插入操作后需要返回生成的主键,可以使用@Options
注解配合useGeneratedKeys
和keyProperty
属性来实现。
🚦示例
✨接口类编写
向接口类WorkerMapper中添加以下代码:
@Insert("insert into worker(name,age,sex,worker_id) values(#{name},#{age},#{sex},#{worker_id})")int insertWorker(Worker worker);
✨测试方法
@Testpublic void testInsert(){SqlSession sqlSession=MyBatisUtil.getSession();Worker worker=new Worker();worker.setId(4);worker.setName("青青");worker.setAge(22);worker.setSex("男");worker.setWorker_id(1004);WorkerMapper workerMapper=sqlSession.getMapper(WorkerMapper.class);int result=workerMapper.insertWorker(worker);if(result>0){System.out.println("成功插入"+result+"条信息");}else{System.out.println("插入失败");}System.out.println(worker.toString());sqlSession.commit();sqlSession.close();}
🎯@Update注解
@Update
注解用于映射 SQL 的更新语句。当需要更新数据库表中的记录时,可以使用此注解。可以指定更新的条件,例如根据某个字段的值。
🚦示例
✨接口类编写
向接口类WorkerMapper中添加以下代码:
@Update("update worker set age=#{age} and sex=#{sex} where id=#{id}")int UpdateWorker(Worker worker);
✨测试方法
@Testpublic void testUpdate(){SqlSession sqlSession=MyBatisUtil.getSession();Worker worker=new Worker();worker.setId(4);worker.setAge(23);worker.setSex("女");WorkerMapper workerMapper=sqlSession.getMapper(WorkerMapper.class);int result=workerMapper.UpdateWorker(worker);if(result>0){System.out.println("成功修改"+result+"条数据");}else{System.out.println("修改数据失败");}System.out.println(worker.toString());sqlSession.commit();sqlSession.close();}
🎯@Delete注解
@Delete
注解用于映射 SQL 的删除语句。当需要从数据库表中删除记录时,可以使用此注解。可以指定删除的条件,例如根据某个字段的值。
🚦示例
✨接口类编写
@Delete("delete from worker where id=#{id}")int DeleteWorker(int id);
✨测试方法
@Testpublic void testDelete(){SqlSession sqlSession=MyBatisUtil.getSession();WorkerMapper workerMapper=sqlSession.getMapper(WorkerMapper.class);int result=workerMapper.DeleteWorker(4);if(result>0){System.out.println("成功删除"+result+"条数据");}else{System.out.println("删除数据失败");}sqlSession.commit();sqlSession.close();}
🎯@Param注解
@Param
注解用于为 MyBatis 方法参数提供命名参数的功能。在 SQL 语句中,可以使用这些命名参数来引用方法参数。这对于动态 SQL 特别有用,也使得代码更加清晰。当方法有多个参数时,使用@Param
注解可以避免参数索引的混乱。
🚦示例
✨接口类编写
@Select("select * from worker where id=#{param1} and name=#{param2}")Worker selectWorker(@Param("param1")int id,@Param("param2")String name);
✨测试方法
@Testpublic void testParam(){SqlSession sqlSession=MyBatisUtil.getSession();WorkerMapper workerMapper=sqlSession.getMapper(WorkerMapper.class);Worker worker=workerMapper.selectWorker(1,"丽丽");System.out.println(worker.toString());sqlSession.close();}
以上就是今天要讲的内容了,主要跟练了关于@Select,@Update,@Insert,@Delete,@Param的部分。到此为止,Mybatis部分已全部更完,后续会继续更新Spring相关内容,如果您感兴趣的话,可以订阅我的相关专栏。非常感谢您的阅读,如果这篇文章对您有帮助,那将是我的荣幸。我们下期再见啦🧸!
相关文章:

【Mybatis篇】Mybatis的注解开发
🧸安清h:个人主页 🎥个人专栏:【计算机网络】,【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 文章目录 🎯 Select注解 …...
NEC协议
NEC协议是一种红外线通信协议,广泛应用于家电遥控器和其他红外线设备之间的通信。以下是对NEC协议的详细解释和介绍: 一、开发背景与应用 NEC协议由日本电子公司NEC(日本电气公司)开发,因其简单、易于实现和广泛兼容…...

Meta 发布 Quest 3S 头显及 AR 眼镜原型:开启未来交互新视界
简介 在科技的浪潮中,Meta 始终站在创新的前沿,不断为我们带来令人惊叹的虚拟现实和增强现实体验。2024 年 10 月 6 日,让我们一同聚焦 Meta 最新发布的 Quest 3S 头显及 AR 眼镜原型(Orion),探索这两款产品…...
【CSS】水平垂直居中
给父盒子设置属性 flex display: flex;写在父元素上这就是定义了一个伸缩容器justify-content:center 设置主轴对齐方式为居中,默认是横轴。子元素居中。align-items:center 设置纵轴对齐方式为居中,默认是纵轴。子元素居中。 给…...
欧盟零毁林法案 EUDR
EUDR法案,即欧盟零毁林法案(EU Deforestation Regulation),是欧盟为了减少全球森林砍伐和退化,应对气候变化和生物多样性丧失而制定的一项重要法规。以下是对该法案的详细解读: 一、法案背景与目的 EUDR法…...

26.删除有序数组中的重复项
题目::26. 删除有序数组中的重复项 - 力扣(LeetCode) 思路:只要不和前面的数一样就可以移动指针,进行赋值 代码: class Solution { public:int removeDuplicates(vector<int>& nums) {int slow 0 ;for(int fast 1; fast < …...

JAVA实现公众号扫码登录和关注功能实战
前言 使用第三方插件 <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>4.6.0</version> </dependency>准备APPID和appSecet 登录微信公众号后台,复制ap…...

初识Mysql/备份,基础指令
1,MySQL登录指令: mysql -h 127.0.0.1 -P3306 -u -p 其中,-h指明登录部署了mysql服务的主机 -P指明要访问的端口号, -u指明登录用户 -p输入密码 2,数据库基础 mysql:表示的是客户端 mysqld&…...

没想到吧!线稿上色居然可以这么简单
前言 在创意无限的数字艺术世界里,艺术创作中的线稿上色,向来是件既费时又需技巧的活儿,寻找一款既能激发灵感又能简化繁琐流程的工具,是每位艺术家心中的向往。 今天,为大家推荐一款革命性的线稿上色AI工具——千鹿…...
修改Docker的默认存储路径
docker默认存储路径:/var/lib/docker/ 执行 docker info 查看,得到以下信息 Docker Root Dir: /var/lib/docker/Debug Mode: falseRegistry: https://index.docker.io/v1/Labels:Experimental: falseInsecure Registries: 1.修改docker配置 要修改默认…...

深入计算机语言之C++:C到C++的过度
🔑🔑博客主页:阿客不是客 🍓🍓系列专栏:从C语言到C语言的渐深学习 欢迎来到泊舟小课堂 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 一、什么是C C(c plus plusÿ…...
HR面试篇
一.面试中被问职业规划 HR感兴趣的不是你的职业规划,感兴趣的是你的职业规划和他们公司有没有关系。 或者说他们公司能不能去帮助你去实现你的职业规划。 切忌不要讲不合实际的,比如要在公司赚多少钱等等。 要根据公司的特点,找到切入点,只要讲得积极向上就可以。 二.…...

深度探索Kali Linux的精髓与实践应用
Kali Linux简介 Kali Linux作为全球网络安全领域的首选操作系统之一,其强大的功能性及广泛的适用范围令人瞩目。除了上述基础介绍外,让我们深入探究Kali Linux的几个关键特性及其在实际操作中的具体应用案例。 Kali工具集成:全面的安全工具…...

【在Linux世界中追寻伟大的One Piece】DNS与ICMP
目录 1 -> DNS(Domain Name System) 1.1 -> DNS背景 2 -> 域名简介 2.1 -> 域名解析过程 3 -> 使用dig工具分析DNS 4 -> ICMP协议 4.1 -> ICMP功能 4.2 -> ICMP报文格式 4.3 -> Ping命令 4.4 -> traceroute命令 1 -> DNS(Domain Na…...

信息安全工程师(41)VPN概述
前言 VPN,即Virtual Private Network(虚拟专用网络)的缩写,是一种通过公共网络(如互联网)创建私密连接的技术。 一、定义与工作原理 定义:VPN是依靠ISP(Internet Service Provider&…...

算法:双指针系列(一)
双指针系列 一、移动零(一)题目分析(二)代码展示二、复写零(一)题目分析(二)代码展示三、快乐数(一)题目分析(二)代码展示(…...

跟《经济学人》学英文:2024年09月28日这期 The curse of the Michelin star
The curse of the Michelin star Restaurants awarded the honour are more likely to close, research finds 原文: The twelve new restaurants added to the New York Michelin Guide this month, serving up cuisine ranging from “haute French” to “eco…...
Java Set 的介绍与实现原理
什么是 Set 在 Java 中,Set 是一种集合类型,它不允许重复的元素。Set 接口是 Java Collections Framework 的一部分,主要用于存储不重复的值。常见的实现类包括 HashSet、LinkedHashSet 和 TreeSet。 实现原理 1. HashSet HashSet 是最常…...

我谈均值平滑模板——给均值平滑模板上升理论高度
均值平滑(Mean Smoothing),也称为盒状滤波(Box Filter),通过计算一个像素及其周围像素的平均值来替换该像素的原始值,从而达到平滑图像的效果。 均值平滑通常使用一个模板(或称为卷…...

WordPress添加https协议致使后台打不开解决方法
由于删除WordPress缓存插件后操作不当,在加上升级处理,致使茹莱神兽博客的首页出现了https不兼容问题,WordPress后台也无法登陆,链接被误认为是定向重置次数过多,在网上找了好久的答案。 还有就是求助了好些人…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...