[Mybatis注解版的 一对一和一对多实现过程 ]

news/2024/11/17 2:43:28/

目录

🎂前言:

🎂 Mybatis也支持使用注解的方式实现一对一和一对多的关联查询。下面是注解实现的示例代码:

一对一关联查询:

🎂用户实体类(User):

🎂用户详情实体类(UserDetail):

🎂Mapper接口:

🎂一对多关联查询:

🎂订单实体类(Order):

🎂订单详情实体类(OrderDetail):

🎂Mapper接口:

🎂一对一和一对多的数据格式 :


🎂前言:

🎂 感觉要写一些通俗易懂的,

🎂上一篇直接使用mybatis 实现字段映射, 这篇使用注解来实现, 主打就是一个全面

🎂下面是映射版本地址:

[Mybatis的一对一和一对多]_是汤圆丫的博客-CSDN博客

🎂 Mybatis也支持使用注解的方式实现一对一和一对多的关联查询。下面是注解实现的示例代码:

一对一关联查询:

🎂用户实体类(User):

public class User {private int id;private String username;private String password;private String email;private UserDetail detail; // 一对一关联// getter和setter方法
}

🎂用户详情实体类(UserDetail):

public class UserDetail {private int id;private int userId;private String realName;private int age;private String address;// getter和setter方法
}

🎂Mapper接口:

public interface UserMapper {// 查询用户及其详情信息@Select("SELECT u.*, d.* FROM user u LEFT JOIN user_detail d ON u.id = d.user_id WHERE u.id = #{id}")@Results({@Result(property = "id", column = "id"),@Result(property = "username", column = "username"),@Result(property = "password", column = "password"),@Result(property = "email", column = "email"),@Result(property = "detail", column = "id", one = @One(select = "getUserDetail"))})User getUserWithDetail(int id);// 查询用户详情信息@Select("SELECT * FROM user_detail WHERE user_id = #{userId}")UserDetail getUserDetail(int userId);
}

在上面的代码中,我们使用了@Results注解来定义查询结果的映射关系,其中@Result注解用于定义每个属性的映射关系,@One注解用于定义一对一关联关系。在getUserWithDetail方法中,我们使用了@One注解来指定getUserDetail方法来查询用户详情信息,并将查询结果封装到User类的detail属性中。

🎂一对多关联查询:

🎂订单实体类(Order):

public class Order {private int id;private String orderNo;private Date createTime;private List<OrderDetail> details; // 一对多关联// getter和setter方法
}

🎂订单详情实体类(OrderDetail):

public class OrderDetail {private int id;private int orderId;private String productName;private double price;private int quantity;// getter和setter方法
}

🎂Mapper接口:

public interface OrderMapper {// 查询订单及其详情信息@Select("SELECT o.*, d.* FROM order o LEFT JOIN order_detail d ON o.id = d.order_id WHERE o.id = #{id}")@Results({@Result(property = "id", column = "id"),@Result(property = "orderNo", column = "order_no"),@Result(property = "createTime", column = "create_time"),@Result(property = "details", column = "id", many = @Many(select = "getOrderDetails"))})Order getOrderWithDetails(int id);// 查询订单详情信息@Select("SELECT * FROM order_detail WHERE order_id = #{orderId}")List<OrderDetail> getOrderDetails(int orderId);
}

在上面的代码中,我们使用了@Results注解来定义查询结果的映射关系,其中@Result注解用于定义每个属性的映射关系,@Many注解用于定义一对多关联关系。在getOrderWithDetails方法中,我们使用了@Many注解来指定getOrderDetails方法来查询订单详情信息,并将查询结果封装到Order类的details属性中。

🎂一对一和一对多的数据格式 :

这个格式数据要求,一般就看和前端如何去定义的, 你可以一个接口返回一条数据, 然后在提供一个接口 通过入参 再去查询 对应的list 列表数据

{"id": 1,"username": "test","password": "123456","email": "test@example.com","detail": {"id": 1,"userId": 1,"realName": "张三","age": 20,"address": "北京市"}
}
{"id": 1,"orderNo": "202201010001","createTime": "2022-01-01","details": [{"id": 1,"orderId": 1,"productName": "商品1","price": 100.0,"quantity": 2},{"id": 2,"orderId": 1,"productName": "商品2","price": 200.0,"quantity": 1}]
}


http://www.ppmy.cn/news/754212.html

相关文章

苹果手机点击输入框页面自动放大

问题描述 一个项目里用了bootstrap的日期插件bootstrap-datetimepicker&#xff0c;在显示日期的那个input输入框被点击时在苹果手机上页面会被放大&#xff0c;该input输入框type等于text。后来发现忘记加了一些东西。 解决办法 一开始我的meta标签是这样的 <meta name…

宝塔 安装/使用Jenkins-图文小白教程

一、Jenkins包下载 大家可以从Jenkins官网&#xff08;https://www.jenkins.io/&#xff09;根据自己的需要下载最新的版本。 但Jenkins官网下载较慢&#xff0c;容易造成下载失败。可以去国内的开源镜像网站下载Jenkins最新版本。目前博主使用的是清华大学的开源镜像网站&…

LoRA原理解析

文章目录 前言现有方案存在的问题Adapter TuningPrefix Tuning LoRA 前言 随着模型规模的不断扩大&#xff0c;微调模型的所有参数&#xff08;所谓full fine-tuning&#xff09;的可行性变得越来越低。以GPT-3的175B参数为例&#xff0c;每增加一个新领域就需要完整微调一个新…

2023最新FPS实时帧率iApp源码+实时显示屏幕帧率

正文: FPS实时帧率iapp源码&#xff0c;打游戏时可以实时显示屏幕帧率&#xff0c;支持拖动&#xff0c;改变颜色&#xff0c;UI也还可以&#xff0c;有兴趣的自行去安装体验吧&#xff0c;其它就没什么好介绍的了。 程序: wweoos.lanzouo.com/iqn7s0s5wnod 图片:

Unity3d 帧率设置 及在游戏运行时显示帧率

版权声明&#xff1a;本文转自http://blog.csdn.net/huutu 转载请带上 http://www.liveslives.com/ http://blog.csdn.net/cp790621656/article/details/46645743 在Unity3d 中可以通过代码设置 来限定游戏帧率。 [csharp] view plain copy Application.targetFrameRate-1; …

Unity显示帧率代码

新建一个FPSDisplay的脚本&#xff0c;把下面的代码粘贴进去&#xff0c;或者这里下载。然后把脚本挂载场景中任意物体上。 using UnityEngine; using System.Collections;public class FPSDisplay : MonoBehaviour {float deltaTime 0.0f;void Update(){deltaTime (Time.un…

Unity帧率设置以及运行时显示帧率

Unity帧率设置以及运行时显示帧率 设置帧率测试与显示帧率 设置帧率 在Unity3d 中可以通过代码设置来限定游戏帧率。 Application.targetFrameRate -1;设置为**-1**表示不限定帧率&#xff0c;一般情况在手机游戏中我们限定帧率为30就OK了。 Application.targetFrameRate …

帧率设置 及在游戏运行时显示帧率

在Unity3d 中可以通过代码设置 来限定游戏帧率。 [csharp] view plain copy Application.targetFrameRate-1; 设置为 -1 表示不限定帧率。 转自http://blog.csdn.net/huutu 一般在手机游戏中我们限定帧率为30 就OK了。 [csharp] view plain copy Application.targetFrameRat…