关于mybatis对两表之间有两个外键的联合查询解决方案

本文介绍使用MyBatis进行复杂多表关联查询的方法,特别是针对存在两个外键的情况,详细展示了如何在mapping.xml中配置 resultMap 和 select 语句,以实现 Policeinfo 实体类与 Dd 实体类的关联查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Iamten@TOC

关于mybatis对两表之间有两个外键的联合查询解决方案

相同的问题没有找到,找到有相似的,最后综合了之后得出的方法。
关键主要在于mapping.xml。

数据库情况(蓝色相连的两张表)
蓝色相连的两张表

在这里插入图片描述

在这里插入图片描述

mapping.xml

<resultMap id="ClassResultMap" type="com.five.police.model.Policeinfo" >
  <id column="policeid" property="policeid" jdbcType="CHAR" />
  <result column="name" property="name" jdbcType="VARCHAR" />
  <result column="idnum" property="idnum" jdbcType="CHAR" />
  <result column="age" property="age" jdbcType="INTEGER" />
  <result column="workage" property="workage" jdbcType="INTEGER" />
  <result column="phone" property="phone" jdbcType="CHAR" />
  <result column="address" property="address" jdbcType="VARCHAR" />
  <result column="record" property="record" jdbcType="VARCHAR" />
  <result column="photo" property="photo" jdbcType="VARCHAR" />
  <result column="role" property="role" jdbcType="CHAR" />
  <association property="ddsex" javaType="com.five.police.model.Dd">
    <id property="code" column="dd_sex.code"/>
    <result property="value" column="dd_sex.value"/>
  </association>
  <association property="ddrole" javaType="com.five.police.model.Dd">
    <id property="code" column="dd_role.code"/>
    <result property="value" column="dd_role.value"/>
  </association>
</resultMap>

<select id="selectallpolice" resultMap="ClassResultMap" parameterType="java.lang.String" >
  select p.policeid, p.name, p.idnum,
    p.sex, p.age, p.workage, p.phone,
    p.address, p.record, p.photo,
    p.role,dd_sex.code "dd_sex.code",dd_sex.value "dd_sex.value",
    dd_role.code "dd_role.code",dd_role.value "dd_role.value"
  from (select * from DD) AS dd_sex
  RIGHT JOIN policeinfo p ON dd_sex.code = p.sex
  LEFT JOIN DD dd_role ON dd_role.code = p.role
</select>

实体类里添加

private Dd ddsex;

private Dd ddrole;

public Dd getDdsex() {
    return ddsex;
}

public Dd getDdrole() {
    return ddrole;
}

public void setDdsex(Dd ddsex) {
    this.ddsex = ddsex;
}

public void setDdrole(Dd ddrole) {
    this.ddrole = ddrole;
}

在这里插入图片描述
前端也是遇到问题的,通过查帖子也解决了。本人是用的Layui,方法也贴出来吧,可能其他框架也能用。
在这里插入图片描述最终效果。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值