[MyBatis系列⑥]注解开发

news2024/11/26 13:35:32

 🍃作者简介:准大三本科网络工程专业在读,持续学习Java,努力输出优质文章

⭐MyBatis系列①:增删改查

⭐MyBatis系列②:两种Dao开发方式

⭐MyBatis系列③:动态SQL

⭐MyBatis系列④:核心配置文件详解

⭐MyBatis系列⑤:多表查询

1、基本步骤

步骤如下:

编写接口,在接口方法上面使用对应的注解,配置相应的SQL语句

编写测试方法

在mybatis核心配置文件中修改映射信息。

2、常用注解

首先是基本的CRUD来学习,后面再介绍复杂映射多表操作。

注解

说明

@Insert

实现新增

@Update

实现更新

@Delete

实现删除

@Select

实现查询

@Result

实现结果集封装

@Results

可以与@Result 一起使用,封装多个结果集

@One

实现一对一结果集封装

@Many

实现一对多结果集封装

代码如下:

①接口及其接口方法:

②测试方法:

③核心配置文件加载映射:

3、复杂映射

实现复杂关系映射之前可以在映射文件中通过配置<resultMap>来实现,使用注解开发后,可以使用@Results注解 ,@Result注解,@One注解,@Many注解组合完成复杂关系的配置。

注解

说明

@Results

代替的是标签该注解中可以使用单个@Result注解,也可以使用@Result集合。

使用格式:

@Results( {@Result (),@Result () } )

@Results( @Result () )

@Result

代替了<id>标签和<result>标签

@Result 中属性介绍 :

- column:数据库的列名
- property:需要装配的属性名
- one:需要使用的@One 注解(@Result(one=@One) ()))
- many:需要使用的@Many 注解(@Result(many=@many)()))

@One (一对一)

代替了<assocation>标签,是多表查询的关键,在注解中用来指定子查询返回单一对象。

@One 注解属性介绍 :

- select: 指定用来多表查询的 sqlmapper

使用格式:@Result(column="",property="",one=@One(select=""))

@Many (多对一)

代替了<collection>标签, 是多表查询的关键,在注解中用来指定子查询返回对象集合。

使用格式:@Result(property="",column="",many=@Many(select=""))

3.1、一对一

用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户。

一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户

3.1.1、xml回顾

在使用xml配置的时候,对应的sql语句为:

select ordersquery.*, userquery.username,userquery.`password`,userquery.birthday from ordersquery, userquery where ordersquery.userID = userquery.id;

3.1.2、注解

使用注解配置的时候,需要把之前的SQL语句一分为二:

3.2、一对多

用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户

一对多查询的需求:查询一个用户,与此同时查询出该用户具有的订单

3.2.1、xml回顾

在使用xml配置的时候,对应的sql语句为:

select userquery.*,ordersquery.id as orderID,ordersquery.ordertime,ordersquery.total from userquery left join ordersquery on userquery.id = ordersquery.userID;

3.2.2、注解

使用注解配置的时候,需要把之前的SQL语句一分为二:

3.3、多对多

用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用

多对多查询的需求:查询用户同时查询出该用户的所有角色

3.3.1、xml回顾

在使用xml配置的时候,对应的sql语句为:

select userquery.id,userquery.username,userquery.`password`,userquery.birthday,rolequery.id AS roleID,rolequery.rolename from userquery LEFT JOIN user_role ON userquery.id = user_role.user_id INNER JOIN rolequery ON user_role.role_id = rolequery.id;

3.3.2、注解

使用注解配置的时候,需要把之前的SQL语句一分为二:

4、⭐注意事项

在使用注解的时候,不管是“一对一”、“一对多”还是“多对多”,都涉及到一个“对独立的@Result封装”的过程,其中有一个参数为column,这个传的是数据库类型,但是传的是来源于第一条SQL查询的数据库的表单,如下:

🍁行文至此,烦请给个三连支持一下。

🍁您的三连支持,是我创作的最大动力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全新版本QStack云管系统3.5.3 附详细安装教程

源码介绍&#xff1a; QStack云管系统3.5.3&#xff0c;全新版本下载安装包详细搭建教程。 涵盖了服务器、云主机、代理IP等多种云产品管理运维和安全存储。 同时&#xff0c;QStack还支持对接运营众多公有云厂商产品资源&#xff0c;满足不同用户的需求。 通过开放API和插…

(java)进程和线程的联系和区别

目录 进程 1.进程具有独立性 ———— 虚拟地址空间 线程 为什么要引入多个线程&#xff1f; 多线程注意点 ⁜⁜总结&#xff1a;线程和进程的区别和联系⁜⁜ 进程 1.进程具有独立性 首先介绍一下 ———— 虚拟地址空间 在这之前还要了解一下 —— “物理内存”…

接口自动化测试攻略,必看!

为什么要做接口自动化 相对于UI自动化而言&#xff0c;接口自动化具有更大的价值。 为了优化转化路径或者提升用户体验&#xff0c;APP/web界面的按钮控件和布局几乎每个版本都会发生一次变化&#xff0c;导致自动化的代码频繁变更&#xff0c;没有起到减少工作量的效果。 而…

VS Code内存占用过高 - 解决方案

前言 使用VS Code时&#xff0c;其占用的内存可能会急剧增加&#xff0c;从而增加计算机内存的压力&#xff0c;下文介绍如何减少VS Code的内存占用。 通过此方案&#xff0c;本人从3G的内存占用降到了700M的内存占用。 解决方案 打开VS Code的设置&#xff0c;如下图&…

Keepalived(二)

实验一 KeepalivedLvsNginx 实现高可用集群&#xff0c;保证nginx服务正常运行 系统centos7 IP主机名作用192.168.28.141/24klmaster配置Keepalived&#xff08;Master&#xff09;、配置LVS&#xff0c;作为负载均衡器192.168.28.143/24klbackup配置Keepalived&#xff08;…

数据分析 | 特征重要性分析 | 树模型、SHAP值法

前言 在分析特征重要性的时候&#xff0c;相关性分析和主成分分析往往是比较简单的方法&#xff0c;相关性分析是通过计算特征与目标变量之间的相关系数来评估特征的重要性。它可以告诉我们特征和目标变量之间的线性关系程度&#xff0c;但对于非线性关系就无能为力了&#xff…

微前端:重塑大型项目的前沿技术

引言 随着互联网技术的飞速发展&#xff0c;前端开发已经从简单的页面制作逐渐转变为复杂的应用开发。在这个过程中&#xff0c;传统的前端开发模式已经难以满足大型项目的需求。微前端作为一种新的前端架构模式&#xff0c;应运而生&#xff0c;它旨在解决大型项目中的前端开…

C语言基础语法——数据类型

数据类型介绍 数据类型&#xff1a;数据所属的类型 数据类型的作用&#xff1a;编译器预算数据分配的内存空间大小 变量 变量的语法 在计算机程序中&#xff0c;变量是用来存储数据的一个内存区域&#xff0c;并用一个名字来表示这个区域。 在程序运行过程中&#xff0…

Android事件分发

Android事件分发是指触摸屏幕的事件分发&#xff0c;在手指触摸屏幕后所产生的一系列事件中&#xff0c;典型的事件类型有如下几种: MotionEvent.ACTION_DOWN ——手指刚接触屏幕MotionEvent.ACTION_MOVE——手指在屏幕上面滑动MotionEvent.ACTION_UP——手指从屏幕上松开的一…

C语言每日一题 ----计算日期到天数转换(Day 2)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C语言天天练 &#x…

m3u8 blob视频免费下载

F12点开找到这个视频url最后是.m3u8结尾 http://blog.luckly-mjw.cn/tool-show/m3u8-downloader/index.html 在上边的网址转Mp4下载即可

HBase集群环境搭建与测试

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

【第四阶段】kotlin语言的List创建与元素获取

1.list创建 val list listOf("jave","kotlin","c","c")2.list集合获取的三种方式 开发过程中尽量使用getOrElse()或者getOrNull&#xff0c;因为他可以防止崩溃取值 package Stage4fun main() {//list 创建val list listOf("jav…

m4s格式转换mp4

先安装 ffmpeg&#xff0c;具体从官网可以查到&#xff0c;https://ffmpeg.org&#xff0c;按流程走。 转换代码如下&#xff0c;可以任意选择格式导出 import subprocess import osdef merge_audio_video(input_audio_path, input_video_path, output_mp4_path):# 构建 FFmpe…

ViT论文Pytorch代码解读

ViT论文代码实现 论文地址&#xff1a;https://arxiv.org/abs/2010.11929 Pytorch代码地址&#xff1a;https://github.com/lucidrains/vit-pytorch ViT结构图 调用代码 import torch from vit_pytorch import ViTdef test():v ViT(image_size 256, patch_size 32, num_cl…

【第四阶段】kotlin语言可变list集合

1.可变list集合 完整写法 var list:MutableList<String> mutableListOf<String>("java","kotlin","c","c") 省略写法 var list mutableListOf("java","kotlin","c","c")fun ma…

CobaltStrike提权

攻击机&#xff1a;Kali Linux 靶 机&#xff1a;Windows 7 一、上线CS 复制命令&#xff0c;在靶机执行上线CS 2.安装插件&#xff0c;获取shell https://github.com/rsmudge/ElevateKit 上线CS 右击shell&#xff0c;选择插件 有七个模块可以利用&#xff0c;可以逐一…

C++实现YOLOP

C实现YOLOP 一、简介 使用OpenCV部署全景驾驶感知网络YOLOP&#xff0c;可同时处理交通目标检测、可驾驶区域分割、车道线检测&#xff0c;三项视觉感知任务&#xff0c;依然是包含C和Python两种版本的程序实现 onnx文件从百度云盘下载&#xff0c;链接&#xff1a;https://…

【AutoLayout案例07-如何通过代码添加约束 Objective-C语言】

一、那么,接下来,我们就给大家介绍一下,如何通过代码,来实现这个AutoLayout 1.咱们之前是不是都是通过,storyboard、来拖、拉、拽、的方式实现的吧 现在给大家介绍一下,如何通过代码,来实现 在继续介绍,如何通过代码,来实现AutoLayout之前呢, 我们先要给大家补充一…

基于Java+SpringBoot+Vue前后端分离疫苗发布和接种预约系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…