一、什么是关联查询?
当访问关系的一方时,如果需要查看与之关联的另一方数据,则必须使用表链接查询,将查询到的另一方数据,保存在本方的属性中。
二、关联查询的语法?
①:指定”一方“关系时(对象),使用<association javaType = " ">
②:指定”多方“关系时(集合),使用<collection ofType = " ">
三、一对一查询:
需求:查询银行卡账户信息,关联查询用户信息。
分析:因为一个银行卡账户只能供某个人使用,所以从查询银行卡账户信息出发关联查询用户信息为一对一查询。
用户信息:
package com.by.pojo;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private Integer id;
private String username;
private String password;
private Date birthday;
private String sex;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
账户信息:
package com.by.pojo;
import java.io.Serializable;
public class Account implements Serializable {
private Integer id;
private Integer uid;
private Double money;
private User user;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Account{" +
"id=" + id +
", uid=" + uid +
", money=" + money +
", user=" + user +
'}';
}
}
接口信息:
package com.by.mapper;
import com.by.pojo.Account;
public interface AccountDao {
public Account getAccountById(Integer id);
}
映射文件信息:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace:接口的全称类名-->
<mapper namespace="com.by.mapper.AccountDao">
<!-- 结果映射
id:和select查询标签的返回值保持一致
type: 映射实体的全类名
-->
<resultMap id="getAccountByIdResultMap" type="Account">
<!--
描述主键字段的映射关系:
property:实体类的属性
column:数据表字段名称
-->
<id property