MyBatis关联映射

2019-06-18  本文已影响0人  Mr_J316

多对一单向关联映射

public class Category {
    private String id;// 类别编号
    private String name;// 类别名称
}
public class User {
    private String id;// 用户编号
    private String name;// 用户名
    private Integer age;// 年龄
    private Category category;// 所属类别
}

配置方法一:

<resultMap id="userResultMap" type="User">
    <id property="id" column="id"/>   
    <result property="name" column="name"/>
    <result property="age" column="age"/>
    <result property="category.id" column="cid" />
    <result property="category.name" column="cname" />
</resultMap>

<select id="selectById" parameterType="String" resultMap="userResultMap"> 
    select u.id,u.name,u.age,c.id as cid,c.name as cname
    from users u left join category c
    on u.categoryid=c.id 
    where u.id=#{id}        
</select>

配置方法二:

<resultMap id="userResultMap" type="User">
    <id property="id" column="iD"/>   
    <result property="name" column="name"/>
    <result property="age" column="age"/>
    <association property="category" javaType="Category">
         <id property="id" column="cid"/>
         <result property="name" column="cname"/>
    </association>
</resultMap>
<select id="selectById" parameterType="String" resultMap="userResultMap"> 
    select u.id,u.name,u.age,c.id as cid,c.name as cname
    from users u left join category c
    on u.categoryid=c.id 
    where u.id=#{id}        
</select>

配置方法三:

<resultMap id="userResultMap" type="User">
    <id property="id" column="id"/>   
    <result property="name" column="name"/>
    <result property="age" column="age"/>
    <association property="category" javaType="Category" 
                 resultMap="categoryResultMap"/>
</resultMap>
<resultMap id="categoryResultMap" type="Category">
   <id property="id" column="cid"/>
   <result property="name" column="cname"/>
</resultMap>

<select id="selectById" parameterType="String" resultMap="userResultMap"> 
    select u.id,u.name,u.age,c.id as cid,c.name as cname
    from users u left join category c
    on u.categoryid=c.id 
    where u.id=#{id}        
</select>

多对一/一对多双向关联映射

public class Category {
    private String id;// 类别编号
    private String name;// 类别名称
    private List<User> users;// 用户集合
}
public class User {
    private String id;// 用户编号
    private String name;// 用户名
    private Integer age;// 年龄
    private Category category;// 所属类别
}

配置方法一:

<resultMap id="categoryResultMap" type="Category">
    <id property="id" column="cid" />
    <result property="name" column="cname" />
    <collection property="users" ofType="User">
        <id property="id" column="id" />
        <result property="name" column="name" />
        <result property="age" column="age" />
    </collection>
</resultMap>

<select id="selectById" parameterType="String" resultMap="categoryResultMap">
    select c.id as cid,c.name as cname,u.id,u.name,u.age
    from category c left join users u
    on c.id=u.categoryid
    where c.id=#{id}
</select>

配置方法二:

<resultMap id="categoryResultMap" type="Category">
    <id property="id" column="cid"/>   
    <result property="name" column="cname"/>
    <collection property="users" ofType="User"   
                resultMap="com.dao.UserDao.userResultMap"/>
</resultMap>
    
<select id="selectById" parameterType="String" resultMap="categoryResultMap">
    select c.id as cid,c.name as cname,u.id,u.name,u.age
    from category c left join users u
    on c.id=u.categoryid 
    where c.id=#{id}    
</select>
上一篇 下一篇

猜你喜欢

热点阅读