MyBatis联表查询

一对一

一个账户对应一个用户:

账户实体:

public class Account {
    private Integer id;
    private Double money;
    private User user;
}

用户实体:

public class User {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
    private List<Account> accounts;
}

映射文件:

<?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.ttpfx.dao.AccountDao">
    <resultMap id="accountUserMap" type="Account">
        <id property="id" column="id"/>
        <result property="money" column="money"/>
        <association property="user" javaType="User">
            <id property="id" column="uid"/>
            <result property="username" column="username"/>
            <result property="birthday" column="birthday"/>
            <result property="sex" column="sex"/>
            <result property="address" column="address"/>
        </association>
    </resultMap>

    <select id="getAccountList" resultMap="accountUserMap">
        select a.id, a.money, a.uid, u.username, u.birthday, u.sex, u.address from account as a left join user as u on a.uid=u.id
    </select>
</mapper>

一对多

一个用户对应多个账户:

用户&账户实体类同上

映射文件:

<?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.ttpfx.dao.UserDao">
    <resultMap id="userAccountMap" type="User">
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="birthday" column="birthday"/>
        <result property="sex" column="sex"/>
        <result property="address" column="address"/>
        <collection property="accounts" ofType="Account">
            <id property="id" column="aid"/>
            <result property="money" column="money"/>
        </collection>
    </resultMap>

    <select id="getUserList" resultMap="userAccountMap">
        select u.id, u.username, u.birthday, u.sex, u.address, a.id as aid, a.money from user as u left join account as a on u.id = a.uid
    </select>
</mapper>
posted @ 2021-03-09 17:43  ttpfx  阅读(94)  评论(0编辑  收藏  举报