MyBatis关联映射

多对一单向关联映射

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>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、实验目的: 掌握MyBatis的关联映射(一对一、一对多、多对多)实验内容:模拟用户批量购买理财产品的业务。用...
    Topus阅读 1,470评论 0 2
  •   前面几篇关于mybatis的文章中的案例都是基于单表下面的操作,如果涉及多表之间的操作情况就变复杂了,常见的多...
    小manong阅读 644评论 0 0
  • 上篇文章我们对持久化对象进行的学习,了解了它的三种不同的状态并通过它完成对数据库的映射操作。但这都是基于单张表的操...
    Single_YAM阅读 520评论 0 1
  • 作为一种轻量级的关系映射工具,Hibernate支持各种关系映射,例如:多对一、一对多和一对一的数据库表关系,通过...
    Ystrator阅读 538评论 0 1
  • 上篇文章我们通过注解对映射了单个实体类,但是具体项目中往往实体类之间又是相互关联的,本篇文章就是从实体类之间存在的...
    Single_YAM阅读 935评论 0 2