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已经进行了自动传入。

  • 相关阅读:
    排查线上问题常用的几个Linux命令
    OAuth2简易实战(一)-四种模式
    程序员必备的网站推荐
    C++ sizeof
    C++ 求余运算符
    C++ mutable(可变的)
    C++ const_cast用法
    C++常变量和文字常量
    C++中 <iso646.h>头文件
    java-网络编程-使用URLDecoder和URLEncoder
  • 原文地址:https://www.cnblogs.com/phpyangbo/p/15705580.html
Copyright © 2011-2022 走看看