03 mybatis多表查询一对一,一对多, 多对多

版权声明:转载需经过作者同意,请尊重原创 https://blog.csdn.net/woshilovetg/article/details/85386361

Account.java

package cn.itcast.domin;

public class Account {

    private Integer aid;

    private Integer uid;

    private Double money;

    //实现一对一

    private User user;

    public User getUser() {

        return user;

    }

    public void setUser(User user) {

        this.user = user;

    }

    public Account() {

    }

    public Integer getAid() {

        return aid;

    }

    public void setAid(Integer aid) {

        this.aid = aid;

    }

    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;

    }

    @Override

    public String toString() {

        return "Account{" +

                "aid=" + aid +

                ", uid=" + uid +

                ", money=" + money +

                '}';

    }

}

User.java

package cn.itcast.domin;

import java.io.Serializable;

import java.util.Date;

import java.util.List;

/**

 *

 */

public class User implements Serializable {

    private Integer userId;

    private String userName;

    private String userAddress;

    private String userSex;

    private Date userBirthday;

    //实现一对多

    private List<Account> accounts;

    public List<Account> getAccounts() {

        return accounts;

    }

    public void setAccounts(List<Account> accounts) {

        this.accounts = accounts;

    }

    public Integer getUserId() {

        return userId;

    }

    public void setUserId(Integer userId) {

        this.userId = userId;

    }

    public String getUserName() {

        return userName;

    }

    public void setUserName(String userName) {

        this.userName = userName;

    }

    public String getUserAddress() {

        return userAddress;

    }

    public void setUserAddress(String userAddress) {

        this.userAddress = userAddress;

    }

    public String getUserSex() {

        return userSex;

    }

    public void setUserSex(String userSex) {

        this.userSex = userSex;

    }

    public Date getUserBirthday() {

        return userBirthday;

    }

    public void setUserBirthday(Date userBirthday) {

        this.userBirthday = userBirthday;

    }

    @Override

    public String toString() {

        return "User{" +

                "userId=" + userId +

                ", userName='" + userName + '\'' +

                ", userAddress='" + userAddress + '\'' +

                ", userSex='" + userSex + '\'' +

                ", userBirthday=" + userBirthday +

                '}';

    }

    public static void main(String[] args) {

        System.out.println("000");

    }

}

IAccountDao.java

package cn.itcast.dao;

import cn.itcast.domin.Account;

import java.util.List;

public interface IAccountDao {

    //查询所有账户信息,关联查询用户的信息。(一对一)

    public List<Account> findAccount();

}

IUserDao.java

package cn.itcast.dao;

import cn.itcast.domin.User;

import java.util.List;

public interface IUserDao {

    //查询所有用户信息及用户关联的账户信息。(一对多)

    public List<User> findUser();

}

IAccountDao.xml

<?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="cn.itcast.dao.IAccountDao">

    <resultMap id="accountMap" type="cn.itcast.domin.Account">

        <!--Account类中的属性和account表中的列相对应

        <id></id>account表中主键的和Account类属性对象

        -->

        <!--注意column属性对应的是,sql语句查询出来的字段名(或者起的别名),不是表中的字段-->

        <id property="aid" column="aid"></id>

        <result property="uid" column="uid"></result>

        <result property="money" column="money"></result>

        <!--Account类中,引入User

        property:Account类中引入User类,所起的属性名( private User user

        javaTypeuser的全类名

        <id></id>user表中主键的和User类属性对象

        -->

        <!--一对一-->

        <association property="user" javaType="cn.itcast.domin.User">

            <!--注意column属性对应的是,sql语句查询出来的字段名(或者起的别名),不是表中的字段-->

            <id property="userId" column="id"></id>

            <result property="userName" column="username"></result>

            <result property="userBirthday" column="birthday"></result>

            <result property="userSex" column="sex"></result>

            <result property="userAddress" column="address"></result>

        </association>

    </resultMap>

    <!--查询所有账户信息,关联查询用户的信息。(一个账户对应一个用户,一对一)-->

    <select id="findAccount" resultMap="accountMap">

        SELECT

            a.*, u.*

        FROM

            account a,

            USER u

        WHERE

            a.uid = u.id

    </select>

</mapper>

IUserDao.xml

<?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="cn.itcast.dao.IUserDao">

    <resultMap id="userMap" type="cn.itcast.domin.User">

        <!--注意column属性对应的是,sql语句查询出来的字段名(或者起的别名),不是表中的字段-->

        <id property="userId" column="id"></id>

        <result property="userName" column="username"></result>

        <result property="userBirthday" column="birthday"></result>

        <result property="userSex" column="sex"></result>

        <result property="userAddress" column="address"></result>

        <!--User类中引入的List<Account> accounts

            ofType:引入list的泛型

        -->

        <!--一对多 -->

        <collection property="accounts" ofType="cn.itcast.domin.Account">

            <!--注意column属性对应的是,sql语句查询出来的字段名(或者起的别名),不是表中的字段-->

            <id property="aid" column="aid"></id>

            <result property="uid" column="uid"></result>

            <result property="money" column="money"></result>

        </collection>

    </resultMap>

    <!--查询所有用户信息及用户关联的账户信息。(一对多)-->

    <select id="findUser" resultMap="userMap">

        SELECT

          *

        FROM

          USER u

        LEFT JOIN account a

        ON a.`uid` = u.`id`

    </select>

</mapper>

多对多                                                                                                                                        

猜你喜欢

转载自blog.csdn.net/woshilovetg/article/details/85386361