[MyBatis系列⑥]注解开发

 🍃作者简介:准大三本科网络工程专业在读,持续学习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查询的数据库的表单,如下:

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Postman API测试之道:不止于点击,更在于策略

引言&#xff1a;API测试的重要性 在当今的软件开发中&#xff0c;API已经成为了一个不可或缺的部分。它们是软件组件之间交互的桥梁&#xff0c;确保数据的流动和功能的实现。因此&#xff0c;对API的测试显得尤为重要&#xff0c;它不仅关乎功能的正确性&#xff0c;还涉及到…

android framework之Applicataion启动流程分析

Application启动流程分析 启动方式一&#xff1a;通过Launcher启动app 启动方式二&#xff1a;在某一个app里启动第二个app的Activity. 以上两种方式均可触发app进程的启动。但无论哪种方式&#xff0c;最终通过通过调用AMS的startActivity()来启动application的。 根据上图…

论文解读 | ScanNet:室内场景的丰富注释3D重建

原创 | 文 BFT机器人 大型的、有标记的数据集的可用性是为了利用做有监督的深度学习方法的一个关键要求。但是在RGB-D场景理解的背景下&#xff0c;可用的数据非常少,通常是当前的数据集覆盖了一小范围的场景视图&#xff0c;并且具有有限的语义注释。 为了解决这个问题&#…

数据仓库一分钟

简介 数据仓库&#xff08;Data Warehouse&#xff09;简称DW或DWH&#xff0c;是数据库的一种概念上的升级&#xff0c;可以说是为满足新需求设计的一种新数据库&#xff0c;而这个数据库是需容纳更多的数据&#xff0c;更加庞大的数据集&#xff0c;从逻辑上讲数据仓库和数据…

Midjourney API 的对接和使用

“ 阅读本文大概需要 4 分钟。 ” 在人工智能绘图领域&#xff0c;想必大家听说过 Midjourney 的大名吧。 Midjourney 以其出色的绘图能力在业界独树一帜。无需过多复杂的操作&#xff0c;只要简单输入绘图指令&#xff0c;这个神奇的工具就能在瞬间为我们呈现出对应的图像。无…

Git企业开发控制理论和实操-从入门到深入(七)|企业级开发模型

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

8.7.tensorRT高级(3)封装系列-调试方法、思想讨论

目录 前言1. 模型调试技巧总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-调试方法、思想讨论 课程大纲可看…

知虾shopee数据分析工具:shopee出单的商机利器

当今数字化时代&#xff0c;数据已经成为商业成功的关键要素之一。而Shopee作为东南亚最大的电商平台之一&#xff0c;其强大的数据分析工具正为商家提供了宝贵的市场洞察和决策支持。本文将深入探讨Shopee数据分析工具如何帮助商家抓住商机并取得成功。 洞察消费者需求&#x…

P21~22 第六章 储能元件——电容存储电场能,电感存储磁场能

1、电容元件 a定义 b线性时不变电容元件 c电容的电压与电流关系 i有限则u有限 注意理解面积 d电容的功率和储能 e例一 跃变就是指物体的物理量从有限值变为无限值的过程。 分析上图例题&#xff1a;对于电源波形要吃负无穷到正无穷去刻画。即时间轴要铺满。 有有图控制电…

sql:SQL优化知识点记录(四)

&#xff08;1&#xff09;explain之ref介绍 type下的ref是非唯一性索引扫描具体的一个值 ref属性 例如&#xff1a;ti表先加载&#xff0c;const是常量 t1.other_column是个t1表常量 test.t1.ID&#xff1a;test库t1表的ID字段 t1表引用了shared库的t2表的col1字段&#x…

python可视化matplotlib——绘制正弦和余弦

这是一个使用matplotlib库绘制正弦和余弦函数曲线的代码示例。代码中导入了需要的库&#xff0c;并设置了x轴和y轴的标签字体为华文楷体。然后&#xff0c;使用numpy生成一组x轴上的值t&#xff0c;并使用正弦函数生成对应的y轴值s&#xff0c;再使用余弦函数生成对应的y轴值z。…

Java学数据结构(1)——抽象数据类型ADT 表List、栈Stack和队列Qeue

目录 引出抽象数据类型&#xff08;abstract data type,ADT&#xff09;表ListArrayList,Vector, LinkedListArrayList手动实现与分析Vector的分析&#xff08;线程安全&#xff09;LinkedList 的手动实现与分析 栈stack—后进先出java中stack源码分析栈的应用&#xff1a;检查…

创邻科技张晨:图数据库,激活数据要素的新基建

“数据经济时代&#xff0c;数据要素产业链的各细分领域均蕴含机遇&#xff0c;图技术作为网络协同和数据智能的底层发动机&#xff0c;将深度掘金数字中国价值潜能”。 8月22日&#xff0c;在2023中国&#xff08;南京&#xff09;国际软件产品和信息服务交易博览会的信息技术…

Day48|leetcode 198.打家劫舍、213.打家劫舍II、打家劫舍|||

leetcode 198.打家劫舍 题目链接&#xff1a;198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 视频链接&#xff1a;动态规划&#xff0c;偷不偷这个房间呢&#xff1f;| LeetCode&#xff1a;198.打家劫舍_哔哩哔哩_bilibili 题目概述 你是一个专业的小偷&#xff0c;…

【Android】TextView适配文本大小并保证中英文内容均在指定的UI 组件内部

问题 现在有一个需求&#xff0c;在中文环境下textView没有超过底层的组件限制&#xff0c;但是一切换到英文环境就超出了&#xff0c;这个如何解决呢&#xff1f;有啥例子吗&#xff1f; 就像这样子的。 解决 全部代码如下&#xff1a; <?xml version"1.0"…

汽车电子笔记之:AUTOSAR方法论及基础概念

目录 1、AUTOSAR方法论 2、AUTOSAR的BSW 2.1、MCAL 2.2、ECU抽象层 2.3、服务层 2.4、复杂驱动 3、AUTOSAR的RTE 4、AUTOSAR的应用层 4.1、SWC 4.2、AUTOSAR的通信 4.3、AUTOSAR软件接口 1、AUTOSAR方法论 AUTOSAR为汽车电子软件系统开发过程定义了一套通用的技术方法…

腾讯云coding平台平台inda目录遍历漏洞复现

前言 其实就是一个python的库可以遍历到&#xff0c;并不能遍历到别的路径下&#xff0c;后续可利用性不大&#xff0c;并且目前这个平台私有部署量不多&#xff0c;大多都是用腾讯云在线部署的。 CODING DevOps 是面向软件研发团队的一站式研发协作管理平台&#xff0c;提供…

基于Ubuntu坏境下的Suricata坏境搭建

目录 Suricata环境安装 第一步、在 Ubuntu 端点安装 Suricata 1、加入Suricata源 2、更新安装包 3、下载SuricataSuricata 第二步、下载并提取新兴威胁 Suricata 规则集 1、在tmp文件夹下载 Suricata 规则集 如果发现未安装curl&#xff0c;使用apt安装即可&#xff1a;…

QT 消息对话框按钮显示

前言 搞QT嘛&#xff0c;大多数都是军工。都要国产化&#xff0c;而且消息对话框的按钮的英文也不是很得劲&#xff0c;所以需要汉化。使用静态函数的按钮就是显示英文&#xff0c;汉化的代码如下。 void Widget::on_pushButton_clicked() {QMessageBox box(QMessageBox::Inf…

MySQL 条件查询 Emoji 表情符号却返回多条数据【包含其它表情符号】的问题解决 - COLLATION 字符序的选择

1、问题出现 在APP客户端输入搜索文章的关键字时&#xff0c;不小心输入来了一个 emoji 表情符号&#xff0c;提示出错了&#xff0c;在后台查询错误日志信息&#xff0c;提示查询出现了2条相同的记录&#xff1a; Caused by: org.hibernate.NonUniqueResultException: query …