美文网首页
mybatis 多表关联查询

mybatis 多表关联查询

作者: 困火 | 来源:发表于2017-11-30 18:12 被阅读343次

首先这里有两个表分别是seckill(秒杀表),success_killed(秒杀成功明细表)两个表和seckill和successkilled两个实体类
seckill表:


image.png

success_killed:


image.png

连个表是靠seckill_id这个字段来进行关联的
1.一对一关系的时候:在seckill实体类中添加successkilled属性
private SuccessKilled successKilled;
在xml配置文件中配置如下:

   <resultMap id="seckillMap" type="Seckill">
        <id column="seckill_id" property="seckillId"></id>
        <result property="name" column="name"/>
        <result property="number" column="number"/>
        <result property="startTime" column="start_time"/>
        <result property="endTime" column="end_time"/>
        <result property="createTime" column="create_time"/>      
        <association property="successKilled" javaType="SuccessKilled">
            <result property="userPhone" column="user_phone"/>
            <result property="state" column="state"/>
            <result property="createTime" column="ctime"/>
        </association>
    </resultMap>
  <select id="findundetailById" resultMap="seckillMap">
     select se.seckill_id as seckill_id,
      se.name,
      se.number,
      se.start_time,
      se.end_time,
      se.create_time,
      su.seckill_id as sid,
      su.user_phone,
      su.state,
      su.create_time as ctime
      from seckill se LEFT JOIN success_killed su
     on se.seckill_id = su.seckill_id
     <where>
         <if test="id !=null">se.seckill_id = #{id}</if>
     </where>
  </select>

在result中添加<association>标签,其中property 属性为实体类种的属性名字,column 属性为sql中查询出来的列的名字(有别名的时候是别名的名称,并且不能让列名相同)
2.一对多关系的时候,在seckill实体类中添加successkilled属性
private List<SuccessKilled > successKilleds;
在xml配置文件中配置如下:

   <resultMap id="seckillMap" type="Seckill">
        <id column="seckill_id" property="seckillId"></id>
        <result property="name" column="name"/>
        <result property="number" column="number"/>
        <result property="startTime" column="start_time"/>
        <result property="endTime" column="end_time"/>
        <result property="createTime" column="create_time"/>      
        <collection property="successKilleds" 
                ofType="com.ygf.domain.SuccessKilled">
<!--  这里的column对应的是下面查询的别名,而不是表字段名   -->
<!-- property对应JavaBean中的属性名 -->
        <id property="seckillId" column="sid"></id>
        <result property="userPhone" column="user_phone"/>
        <result property="state" column="state"/>
        <result property="createTime" column="ctime"/>
        </collection>
    </resultMap>

在result中添加<collection>标签 其中property为实体类中的属性名,ofType为实体类。

相关文章

  • python面试题01

    1、什么是多表关联查询,有几种多表关联的查询方式,分别是什么? 多表关联查询概念: 多表关联查询分类:1.1内连接...

  • InvalidDefinitionException: No s

    在使用springboot + mybatis实现多表关联查询时报以下错误:com.fasterxml.jacks...

  • mybatis 多表关联查询

    首先这里有两个表分别是seckill(秒杀表),success_killed(秒杀成功明细表)两个表和seckil...

  • MySQL的多表关联查询

    一、多表关联查询 多表关联查询是使用一条SQL语句,将关联的多张表的数据查询出来。 1.1 交叉查询 交叉查询就是...

  • mybatis的多表关联查询

    平时项目中不可避免的会使用多表关联查询。 xml文件的写法 分页插件的使用,使用pagehelperpackage...

  • Oracle学习(二)

    --======================================多表关联查询--查询员工编号,员工...

  • 5/10day51_查询&多表

    回顾 优化测试方法 mybatis查询和多表 一 Mybatis单表查询 1.1 resultMap标签 如果数据...

  • mybatis-plus 注解实现多表关联查询的最佳实践

    在之前一篇文章 MyBatis多表关联的无SQL通用方案 中我们提到了注解绑定关联查询的实践方案,这里我们再汇总梳...

  • MyBatis多表额外sql关联查询

    今天太晚了,写完要很长时间,改天再写........

  • Mybatis多表查询

    mybatis的连接池 我们在实际开发中都会用到连接池,因为他可以减少我们获取连接消耗的时间。 mybatis提供...

网友评论

      本文标题:mybatis 多表关联查询

      本文链接:https://www.haomeiwen.com/subject/tcfbbxtx.html