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

[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查询的数据库的表单,如下:

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

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

http://www.lryc.cn/news/143522.html

相关文章:

  • [ACL2023] Exploring Lottery Prompts for Pre-trained Language Models
  • 【Python编程】将同一种图片分类到同一文件夹下,并且将其分类的路径信息写成txt文件进行保存
  • 单例模式的相关知识
  • vue问题相关记录
  • skywalking服务部署
  • 【uni-app】压缩图片并添加水印
  • 《每天十分钟》-红宝书第4版-变量、作用域与内存
  • NFTScan | 08.21~08.27 NFT 市场热点汇总
  • 【Java 中级】一文精通 Spring MVC - 数据验证(七)
  • css奇数偶数选择器
  • 【算法】双指针求解盛最多水的容器
  • 浅析SAS协议:设备接入与探测
  • RISC-V IOPMP实际用例-Andes SoC‘s Rapid-k模型
  • 【高阶数据结构】哈希表详解
  • C#与西门子PLC1500的ModbusTcp服务器通信4--搭建ModbusTcp客户端
  • 性能调优篇 二、Jvm监控及诊断工具-命令行篇
  • Fooocus启动时modules报错的解决方法
  • RSA私钥解密操作
  • 数据库基本知识
  • 使用Redis统计网站的UV/DAU
  • 【python】报错:ImportError: DLL load failed: 找不到指定的模块 的详细解决办法
  • SemrushBot蜘蛛爬虫屏蔽方式
  • 6 ssh面密登录
  • 基于微信小程序的汽车租赁系统的设计与实现ljx7y
  • 优化学习体验的在线考试系统
  • 1267. 统计参与通信的服务器
  • 【考研数学】矩阵、向量与线性方程组解的关系梳理与讨论
  • 打造个人的NAS云存储-通过Nextcloud搭建私有云盘实现公网远程访问
  • FFI绕过disable_functions
  • 53 个 CSS 特效 2