[Mybatis的一对一和一对多]

目录

 前言:

 一对一关联查询:

 一对多关联查询:

  下面是上面代码中所涉及到的实体类结构设计:

 一对一关联查询:

 用户实体类(User):

 用户详情实体类(UserDetail):

 一对多关联查询:

 订单实体类(Order):

 订单详情实体类(OrderDetail):

 下面是上面代码中所涉及到的表结构设计:

 一对一关联查询:

 用户表(user):

 用户详情表(user_detail):

 一对多关联查询:

 订单表(order):

 订单详情表(order_detail):

 数据格式:

 在一对多关联查询中,查询结果的格式通常是一个主表记录对应多个从表记录,即一个主表记录对应一个包含多个从表记录的集合。以订单表(order)和订单详情表(order_detail)为例,查询结果的格式如下:

 在一对一关联查询中,查询结果的格式通常是一个主表记录对应一个从表记录,即一个主表记录对应一个从表记录对象。以用户表(user)和用户详情表(user_detail)为例,查询结果的格式如下:


前言:

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

上一篇直接使用mybatis注解来实现 , 这篇使用框架提供的标签映射来实现, 主打就是一个全面

下面是映射版本地址:

[Mybatis注解版的 一对一和一对多实现过程 ]_是汤圆丫的博客-CSDN博客

 一对一关联查询:

假设有两个表,一个是用户表(user),另一个是用户详情表(user_detail),它们之间是一对一的关系,即一个用户对应一个用户详情。下面是一对一关联查询的Mapper.xml配置文件:






  
  
  
  
  



  
  
  
  
  

在上面的配置文件中,我们定义了一个查询用户及其详情信息的SQL语句,并且定义了两个结果集,一个是userWithDetail,另一个是userDetail。其中,userWithDetail结果集中包含了user表和user_detail表的所有字段,同时还包含了一个detail属性,该属性的值是一个UserDetail对象,它通过resultMap属性引用了userDetail结果集。

 一对多关联查询:

假设有两个表,一个是订单表(order),另一个是订单详情表(order_detail),它们之间是一对多的关系,即一个订单对应多个订单详情。下面是一对多关联查询的Mapper.xml配置文件:






  
  
  
  



  
  
  
  
  

在上面的配置文件中,我们定义了一个查询订单及其详情信息的SQL语句,并且定义了两个结果集,一个是orderWithDetails,另一个是orderDetail。其中,orderWithDetails结果集中包含了order表的所有字段,同时还包含了一个details属性,该属性的值是一个List对象,它通过resultMap属性引用了orderDetail结果集。

  下面是上面代码中所涉及到的实体类结构设计:

 一对一关联查询:

 用户实体类(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方法
}

 一对多关联查询:

 订单实体类(Order):

public class Order {
    private int id;
    private String orderNo;
    private Date createTime;
    private List details; // 一对多关联

    // getter和setter方法
}

 订单详情实体类(OrderDetail):

public class OrderDetail {
    private int id;
    private int orderId;
    private String productName;
    private double price;
    private int quantity;

    // getter和setter方法
}

在实体类中,我们通过定义属性来表示表中的字段,同时还定义了一对一和一对多的关联关系。在一对一关联中,用户实体类中的detail属性表示用户详情,它的类型是UserDetail类;在一对多关联中,订单实体类中的details属性表示订单详情列表,它的类型是List类。

 下面是上面代码中所涉及到的表结构设计:

 一对一关联查询:

 用户表(user):

字段名 类型 描述
id int 用户ID
username varchar 用户名
password varchar 密码
email varchar 邮箱地址

 用户详情表(user_detail):

字段名 类型 描述
id int 用户详情ID
user_id int 用户ID
real_name varchar 真实姓名
age int 年龄
address varchar 地址

 一对多关联查询:

 订单表(order):

字段名 类型 描述
id int 订单ID
order_no varchar 订单号
create_time date 创建时间

 订单详情表(order_detail):

字段名 类型 描述
id int 订单详情ID
order_id int 订单ID
product_name varchar 商品名称
price double 商品价格
quantity int 商品数量

 数据格式:

 在一对多关联查询中,查询结果的格式通常是一个主表记录对应多个从表记录,即一个主表记录对应一个包含多个从表记录的集合。以订单表(order)和订单详情表(order_detail)为例,查询结果的格式如下:

{
  "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
    }
  ]
}

在上面的JSON格式中,我们可以看到一个订单记录对应了两个订单详情记录,它们被封装在一个List集合中。在Java代码中

 在一对一关联查询中,查询结果的格式通常是一个主表记录对应一个从表记录,即一个主表记录对应一个从表记录对象。以用户表(user)和用户详情表(user_detail)为例,查询结果的格式如下:

{
  "id": 1,
  "username": "test",
  "password": "123456",
  "email": "[email protected]",
  "detail": {
    "id": 1,
    "userId": 1,
    "realName": "张三",
    "age": 20,
    "address": "北京市"
  }
}

在上面的JSON格式中,我们可以看到一个用户记录对应了一个用户详情记录,它们被封装在一个UserDetail对象中,然后作为User对象的detail属性的值。在Java代码中,我们可以通过User类的detail属性来获取这个UserDetail对象,然后获取用户详情记录的信息。

你可能感兴趣的:(java,粉丝栏,mybatis,java,数据库)