MyBatis一对多查询

MyBatis关联查询解析

人员表user

字段备注
idID
username人名

图片表imgs

字段备注
idID
uid用户id
img

实体类user

@TableName("user")
@Data//set,get
public class UserEntity {

    private int ID;
    private String username ;
    private List<img> imgs;
    
}

实体类img

@TableName("imgs")
@Data//set,get
public class ImgsEntity {

    private int ID;
    private int uid;
    private String img;
    
}

关联查询


<resultMap id="userMap" type="UserEntity">//前者map名 后者实体类
     <id column="id" property="ID"/> //前者数据库字段名后者实体类属性
     <result column="username " property="username "/> //前者数据库字段名后者实体类属性
     <collection property="imgs" ofType="ImgEntity ">//前者user字段名 后者实体类
         <id column="id" property="ID"/>
         <result column="uid" property="uid"/>
         <result column="img" property="img"/>
     </collection>
</resultMap>

<select id="queryUserList" resultMap="userMap">  //前者方法名 后者map名
	 SELECT  u.*,i.img
	 FROM user u LEFT JOIN imgs i
	 ON u.id=i.uid
</select>

分步查询


<resultMap id="userMap" type="UserEntity">//前者map名 后者实体类
     <id column="id" property="ID"/> //前者数据库字段名后者实体类属性
     <result column="username " property="username "/> //前者数据库字段名后者实体类属性
      <collection property="imgs"
                    column="{uid=id}"//把id付给uid方便调用方法使用
                    select="ImgsDao.ImgsList" />
</resultMap>

<select id="queryUserList" resultMap="userMap">  //前者方法名 后者map名
	 SELECT  *
	 FROM user u 
</select>

ImgsDao.xml

<select id="ImgsList" resultType="ImgsEntity ">
    SELECT imgs.img FROM imgs
    WHERE imgs.uid=#{uid} 
</select>

使用
@Results(value = {
@Result(id = true, property = “id”, column = “id”),//没有的话外面id会为null
@Result(property = “xiangxi”, column = “id”, many = @Many(select = “findRecordxiangxiparam”))
})//column 中可传多值如id=id,name=name 这个是传到findRecordxiangxiparam方法的参数

@Select( " SELECT wuzi.name,wuzi.type,wuzi.metering,gs.nameteam,jilu.time,jilu.sum,jilu.housum,qiansum\n"
            + " FROM fangxun.app_team_record jilu\n"
            + " left join app_team wuzi on jilu.teamid=wuzi.id \n"
            + " left join app_groupcompany gs on jilu.companyid=gs.id\n"
            + " where wuzi.id=#{id}")
    List<FindRecordRes> findRecordxiangxiparam(Long id);

    // 根据物品id查询物品@Many一对多@One一对一
    @Results(value = {
        @Result(property = "xiangxi", column = "id", many = @Many(select = "findRecordxiangxiparam"))
    })
    @Select( " SELECT wuzi.id,wuzi.name,wuzi.type,wuzi.metering,gs.nameteam,jilu.time,jilu.sum,jilu.housum,qiansum\n"
           + " FROM fangxun.app_team_record jilu\n"
           + " left join app_team wuzi on jilu.teamid=wuzi.id \n"
           + " left join app_groupcompany gs on jilu.companyid=gs.id\n"
           + " where state=#{state}")
    List<FindRecordListRes> findRecordparam(AppTeamRecordParam param);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翎墨袅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值