实习笔记 —— MyBatis V(多表查询)

本文详细介绍了在MyBatis中如何实现一对一和一对多的查询,包括通过创建实体类的常规方法和使用resultMap的方法。通过实例展示了在订单和用户表之间的查询操作,帮助读者理解这两种查询方式的实现步骤和区别。
摘要由CSDN通过智能技术生成

系列文章目录

实习笔记 —— Spring基础
实习笔记 —— IOC反转控制(xml配置文件 + 注解)
实习笔记 —— AOP开发I
实习笔记 —— AOP开发II(AOP中Advice的类型)
实习笔记 —— MyBatis I (MyBatis基础)
实习笔记 —— MyBatis II (MyBatis基本数据库操作)
实习笔记 —— MyBatis III(输入/输出映射)
实习笔记 —— MyBatis IV(动态SQL)



一、一对一查询

“实现以订单为主体,每个订单(一)输出其对应的用户(一)的信息”

刚学的时候没理解一对一查询到底是什么意思,学完一对多之后一对比就知道了。

其实就是实现SQL中的如下语句:

SELECT o.*, u.username, u.address, u.birthday, u.gender 
	FROM orders o
	LEFT JOIN user u
	ON o.user_id = u.id

在本地数据库中的查询结果:
在这里插入图片描述

1.方法一:使用创建实体类的常规方法

left…join… 需要创建二个表结果的实体类OrdersUser

直接上步骤:

①在pojo(entity)包下创建订单表(order)的实体类:

根据数据库的属性声明类的私有属性(点击设计表)
在这里插入图片描述
注意 user_id 是对应 user 表的外键。

package com.high.demo.pojo;

import java.util.Date;

public class Orders {
   
	//订单号
	private Integer id;
	//外键-用户ID
	private Integer user_id;
	//商品编号(二维码)
	private String number;
	//订单创建时间
	private Date createtime;
	//备注信息
	private String note;
		
	public Integer getId() {
   
		return id;
	}
	public void setId(Integer id) {
   
		this.id = id;
	}
	public Integer getUser_id() {
   
		return user_id;
	}
	public void setUser_id(Integer user_id) {
   
		this.user_id = user_id;
	}
	public String getNumber() {
   
		return number;
	}
	public void setNumber(String number) {
   
		this.number = number;
	}
	public Date getCreatetime() {
   
		return createtime;
	}
	public void setCreatetime(Date createtime) {
   
		this.createtime = createtime;
	}
	public String getNote() {
   
		return note;
	}
	public void setNote(String note) {
   
		this.note = note;
	}
	
	
	
	@Override
	public String toString() {
   
		return "Orders [id=" + id + ", user_id=" + user_id + ", number=" + number + ", createtime=" + createtime
				+ ", note=" + note + "]";
	}	
}

②为查询结果创建实体类:
其实本质上查询结果就是创建了一个新表,新的表自然需要一个实体类,只不过为了简便我们没有真的创建新表。

package com.high.demo.pojo;

import java.util.Date;

public class OrdersUser {
   
	//order表
	//订单号
	private Integer id;
	//外键-用户ID
	private Integer user_id;
	//商品编号(二维码)
	private String number;
	//订单创建时间
	private Date createtime;
	//备注信息
	private String note;
	
	//user表
	private String username;
	private Date birthday;
	private String gender;
	private String address;
	
	
	
	public Integer getId(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值