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

【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 注解配合 useGeneratedKeyskeyProperty 属性来实现。

🚦示例

 ✨接口类编写

向接口类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的注解开发

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】&#xff0c;【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 文章目录 &#x1f3af; Select注解 …...

NEC协议

NEC协议是一种红外线通信协议&#xff0c;广泛应用于家电遥控器和其他红外线设备之间的通信。以下是对NEC协议的详细解释和介绍&#xff1a; 一、开发背景与应用 NEC协议由日本电子公司NEC&#xff08;日本电气公司&#xff09;开发&#xff0c;因其简单、易于实现和广泛兼容…...

Meta 发布 Quest 3S 头显及 AR 眼镜原型:开启未来交互新视界

简介 在科技的浪潮中&#xff0c;Meta 始终站在创新的前沿&#xff0c;不断为我们带来令人惊叹的虚拟现实和增强现实体验。2024 年 10 月 6 日&#xff0c;让我们一同聚焦 Meta 最新发布的 Quest 3S 头显及 AR 眼镜原型&#xff08;Orion&#xff09;&#xff0c;探索这两款产品…...

【CSS】水平垂直居中

给父盒子设置属性 flex display: flex;写在父元素上这就是定义了一个伸缩容器justify-content&#xff1a;center 设置主轴对齐方式为居中&#xff0c;默认是横轴。子元素居中。align-items&#xff1a;center 设置纵轴对齐方式为居中&#xff0c;默认是纵轴。子元素居中。 给…...

欧盟零毁林法案 EUDR

EUDR法案&#xff0c;即欧盟零毁林法案&#xff08;EU Deforestation Regulation&#xff09;&#xff0c;是欧盟为了减少全球森林砍伐和退化&#xff0c;应对气候变化和生物多样性丧失而制定的一项重要法规。以下是对该法案的详细解读&#xff1a; 一、法案背景与目的 EUDR法…...

26.删除有序数组中的重复项

题目::26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; 思路:只要不和前面的数一样就可以移动指针&#xff0c;进行赋值 代码: 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 登录微信公众号后台&#xff0c;复制ap…...

初识Mysql/备份,基础指令

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

没想到吧!线稿上色居然可以这么简单

前言 在创意无限的数字艺术世界里&#xff0c;艺术创作中的线稿上色&#xff0c;向来是件既费时又需技巧的活儿&#xff0c;寻找一款既能激发灵感又能简化繁琐流程的工具&#xff0c;是每位艺术家心中的向往。 今天&#xff0c;为大家推荐一款革命性的线稿上色AI工具——千鹿…...

修改Docker的默认存储路径

docker默认存储路径&#xff1a;/var/lib/docker/ 执行 docker info 查看&#xff0c;得到以下信息 Docker Root Dir: /var/lib/docker/Debug Mode: falseRegistry: https://index.docker.io/v1/Labels:Experimental: falseInsecure Registries: 1.修改docker配置 要修改默认…...

深入计算机语言之C++:C到C++的过度

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;从C语言到C语言的渐深学习 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 一、什么是C C&#xff08;c plus plus&#xff…...

HR面试篇

一.面试中被问职业规划 HR感兴趣的不是你的职业规划,感兴趣的是你的职业规划和他们公司有没有关系。 或者说他们公司能不能去帮助你去实现你的职业规划。 切忌不要讲不合实际的,比如要在公司赚多少钱等等。 要根据公司的特点,找到切入点,只要讲得积极向上就可以。 二.…...

深度探索Kali Linux的精髓与实践应用

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

【在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&#xff0c;即Virtual Private Network&#xff08;虚拟专用网络&#xff09;的缩写&#xff0c;是一种通过公共网络&#xff08;如互联网&#xff09;创建私密连接的技术。 一、定义与工作原理 定义&#xff1a;VPN是依靠ISP&#xff08;Internet Service Provider&…...

算法:双指针系列(一)

双指针系列 一、移动零&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示二、复写零&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示三、快乐数&#xff08;一&#xff09;题目分析&#xff08;二&#xff09;代码展示&#xff08…...

跟《经济学人》学英文: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 原文&#xff1a; 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 中&#xff0c;Set 是一种集合类型&#xff0c;它不允许重复的元素。Set 接口是 Java Collections Framework 的一部分&#xff0c;主要用于存储不重复的值。常见的实现类包括 HashSet、LinkedHashSet 和 TreeSet。 实现原理 1. HashSet HashSet 是最常…...

我谈均值平滑模板——给均值平滑模板上升理论高度

均值平滑&#xff08;Mean Smoothing&#xff09;&#xff0c;也称为盒状滤波&#xff08;Box Filter&#xff09;&#xff0c;通过计算一个像素及其周围像素的平均值来替换该像素的原始值&#xff0c;从而达到平滑图像的效果。 均值平滑通常使用一个模板&#xff08;或称为卷…...

WordPress添加https协议致使后台打不开解决方法

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

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...