mybatis 多表查询 (一对多操作)

一对多操作,像是一个user类实例关联好几个account实例

如图,一个jack对应两个account

mybatis 多表查询 (一对多操作)

 

在User类中 加上一个account的集合

package com.qst.domain;

import java.util.List;

public class User {
    private Integer id;
    private String username;
    private String gender;
    private String email;
    private Integer did;
    private List<Account> accounts;

    public List<Account> getAccounts() {
        return accounts;
    }

    public void setAccounts(List<Account> accounts) {
        this.accounts = accounts;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setDid(Integer did) {
        this.did = did;
    }

    public Integer getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getGender() {
        return gender;
    }

    public String getEmail() {
        return email;
    }

    public Integer getDid() {
        return did;
    }

    @Override
    public String toString() {
        return accounts +"User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", gender=" + gender +
                ", email='" + email + '\'' +
                ", did=" + did +
                '}';
    }
}

 在配置映射关系是使用 collertion标签封装account

<?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">
<mapper namespace="com.qst.dao.IUserDao">

    <resultMap id="UserAndAcc" type="com.qst.domain.User">
        <id column="id" property="id"  ></id>
        <result column="username" property="username"></result>
        <result column="gender" property="gender"></result>
        <result column="email" property="email"></result>
        <result column="did" property="did"></result>

        <collection property="accounts"  ofType="com.qst.domain.Account">
            <id column="id" property="id"></id>
            <result column="money" property="money"></result>
            <result column="uid" property="uid"></result>
        </collection>
    </resultMap>

    <select id="findAlls" resultMap="UserAndAcc">
        select *  from employee e left outer join account a on e.id = a.uid
    </select>



</mapper>