zoukankan      html  css  js  c++  java
  • SpringBoot mybatis多对一查询、多对多查询

    查询用户列表,并查询每个用户下面最新的一个订单,和每个用户下面的所有订单。

    package com.yutangzongcai.demo.mapper;
    
    import com.yutangzongcai.demo.entity.DingdanEntity;
    import com.yutangzongcai.demo.entity.UsersEntity;
    import org.apache.ibatis.annotations.*;
    
    import java.util.List;
    
    public interface UsersMapper {
    
        /**
         * 查询用户列表
         * 同时多对一 【查询用户最新1个订单】
         * 同时多对多 【查询用户所有订单】
         * @return
         */
        @Select("select id,name,age from users order by id asc")
        @Results(id = "empMap", value = {
                @Result(column = "id", property = "id", id = true),
                @Result(column = "name2", property = "name"),
                @Result(column = "id", property = "dingdanOne", one = @One(select = "com.yutangzongcai.demo.mapper.UsersMapper.dingdanOne")),
                @Result(column = "id", property = "dingdanMany", many = @Many(select = "com.yutangzongcai.demo.mapper.UsersMapper.dingdanMany"))
        })
        List<UsersEntity> all();
    
        /**
         * 查询用户最新1个订单
         * @param userId
         * @return
         */
        @Select("select * from dingdan where userId=#{userId} order by id desc limit 0,1")
        DingdanEntity dingdanOne(@Param("userId") Integer userId);
    
        /**
         * 查询用户所有订单(按最新排序)
         * @param userId
         * @return
         */
        @Select("select * from dingdan where userId=#{userId} order by id desc")
        List<DingdanEntity> dingdanMany(@Param("userId") Integer userId);
    
    }

    在使用@Result注解进行one对一关联或many对多关联时,必须设置主键,只有设置了主键,才能通过主键传入参数,进行子查询。

    关联查询时,被关联的方法入参userId,是由@Result设置中的主键所决定的,这里mybatis已经进行了自动传入。

  • 相关阅读:
    Bash的提示符
    小笨霖英语笔记本(5)
    什么是VLAN
    阅读笔记:双核心Opteron处理器
    小笨霖英语笔记本(4)
    搭乘CCNUMA快车
    得到tnsnames.ora文件的位置 zz
    关于64位Windows操作系统中的注册表 zz
    Temp.Misc
    HttpHandler HttpModule入门篇
  • 原文地址:https://www.cnblogs.com/phpyangbo/p/15705580.html
Copyright © 2011-2022 走看看