[Mybatis一对多查询]

本文介绍如何在Java POJO中配置Hr对象与Role关联,包括在Hr类中添加Role列表,并在HrMapper.xml中创建HrWithRole resultMap以实现HR与角色职能的多对一查询。通过SQL查询HR表及hr_role和role表,获取HR详情及其角色职能。
摘要由CSDN通过智能技术生成
表名:  hr
字段: id   (用户HR的id)

 

表名hr_role
字段:hrid  (关联的是hr表的id字段)
字段:rid (关联的是role表的id字段)
表名role
字段 id     (角色id)
字段 nameZh ((角色职能)

现在要根据上面结构查询对所有HR的个人信息以及所对应的角色职能,

很明显这是一个一对多的查询,一个HR角色可以拥有多个角色职能,然后通过hr_role表将HR用户表和role角色职能表关联了起来.

第一步:在选主体  

选择Hr为主体对象.然后在Hr.java的POJO中添加 List<Role> roles 字段,并添加对应的getter/setter.

第二步:编写对应的Controller,Service,Mapper

在HrMapper.xml中,需要添加一个resultMap的映射关系.

  Hr.java和mysql中HR表格的对应映射关系
 <resultMap id="BaseResultMap" type="com.bitk.model.Hr" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="name" property="name" jdbcType="VARCHAR" />
    <result column="phone" property="phone" jdbcType="CHAR" />
    <result column="telephone" property="telephone" jdbcType="VARCHAR" />
    <result column="address" property="address" jdbcType="VARCHAR" />
    <result column="enabled" property="enabled" jdbcType="BIT" />
    <result column="username" property="username" jdbcType="VARCHAR" />
    <result column="password" property="password" jdbcType="VARCHAR" />
    <result column="userface" property="userface" jdbcType="VARCHAR" />
    <result column="remark" property="remark" jdbcType="VARCHAR" />
  </resultMap>

在这里配置一对多的映射关系
   column填写数据库表的字段名. property填写的是java定义实体的属性名
  <resultMap id="HrWithRole" type="com.bitk.model.Hr" extends="BaseResultMap" >
    <collection property="roles" ofType="com.bitk.model.Role">
      <id column="id" property="id" javaType="INTEGER"/>
      <result column="name" property="name" jdbcType="VARCHAR" />
      <result column="nameZh" property="nameZh" jdbcType="VARCHAR" />
    </collection>
  </resultMap>

<!--查询HR信息以及他的角色信息  一对多查询-->
  <select id="getAllHrs" resultMap="HrWithRole">
    SELECT
    *
 
    FROM
      hr,
      hr_role,
      role
    where
      hr_role.rid=role.id and
      hr.id=hr_role.hrid
    ORDER BY
      hr.id,role.`nameZh`
  </select>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值