zoukankan      html  css  js  c++  java
  • mybatis三(关联查询)

    一、类属性

    @Alias("depart")
    public class Department {

    private Integer id;
    private String departName;
    private List<User> users;

    @Alias("user")
    public class User {

    private int id;
    private String lastName;
    private String email;
    private String gender;
    private Department dept;

    二、定义方法

    public User selectUserByIdStep(Integer id);

    三、mapper配置

    <resultMap type="depart" id="dMap">
            <id column="depart_id" property="id" />
            <result column="depart_name" property="departName"/>
            <!-- collection的属性封装 -->
            <collection property="users" ofType="user">
                <id column="id" property="id" />
                <result column="last_name" property="lastName"/>
                <result column="email" property="email"/>
                <result column="gender" property="gender"/>
            </collection>
        </resultMap>
        <select id="selectDepartAndUser" resultMap="dMap">
            SELECT
            u.id,u.depart_id,u.email,u.gender,u.last_name,d.depart_name FROM USER
            u LEFT JOIN department d ON u.depart_id=d.id WHERE d.id=#{id}
        </select>

    2. <!-- 鉴别器 

    <discriminator javaType="">
    可以根据某列的值改变封装行为
    如果查询出是女生,则把部门查询出来
    如果是男生,把list_name这列赋值给email
    -->

    <select id="selectUserDis" resultMap="disMap">
            SELECT * FROM USER WHERE id =#{id}
        </select>
        <!-- 鉴别器 
            <discriminator javaType="">
             可以根据某列的值改变封装行为
             如果查询出是女生,则把部门查询出来
             如果是男生,把list_name这列赋值给email
        -->
        <resultMap type="user" id="disMap">
            <id column="id" property="id"/>
            <result column="email" property="email"/>
            <result column="last_name" property="lastName"/>
            <result column="gender" property="gender"/>
            <discriminator javaType="string" column="gender">
                <!-- 女生 -->
                <case value="0" resultType="user">
                    <association property="dept" select="mapper.DepartMapper.selectDepartById" column="{id=depart_id}" fetchType="eager">
                    </association>
                </case>
                <!-- 男生 -->
                <case value="1" resultType="user">
                    <id column="id" property="id"/>
                    <result column="last_name" property="email"/>
                    <result column="last_name" property="lastName"/>
                    <result column="gender" property="gender"/> 
                </case>
            </discriminator>
        </resultMap>
  • 相关阅读:
    BZOJ 2244 [SDOI2011]拦截导弹 (三维偏序CDQ+线段树)
    BZOJ 2141 排队 (三维偏序CDQ+树状数组)
    BZOJ 3295 [CQOI2011]动态逆序对 (三维偏序CDQ+树状数组)
    BZOJ 3262 陌上花开 (三维偏序CDQ+树状数组)
    BZOJ 4012 [HNOI2015]开店 (树分治+二分)
    CF1090H Linearization
    BZOJ 4141 [Thu Summer Camp 2013]魔塔
    luogu P4654 [CEOI2017]Mousetrap
    luogu P4548 [CTSC2006]歌唱王国
    [总结] min-25筛
  • 原文地址:https://www.cnblogs.com/flgb/p/10280105.html
Copyright © 2011-2022 走看看