相同需求使用foreach in sql嵌套完成实例

需求:从steam_wd_order表中取出item_id(是个list),然后在表edu_course_series中取出item_id在item_id(list)中的所有数据,下面是三种方式。

API调用层:

//weiDianOrderDtoList.stream():把数据编程数据流;.map:循环数据流;item->item.getItem_id():用变量item接收循环出来的对象,再取出item_id
        //.collect:将数据转成集合;Collectors.toList():将集合类型转为list类型
        List<String> itemIdList = weiDianOrderDtoList.stream().map(item->item.getItem_id()).collect(Collectors.toList());

        //根据itemID获取serises(第一种方式)
        List<CourseSeriesDto> courseSeriesDtos = weidianBiz.getCourseSeriesByItemId(itemIdList);
        logger.info(courseSeriesDtos);
        
        //根据itemID获取serises(第二种方式)
        String items=StringUtils.join(itemIdList, ",");
        List<CourseSeriesDto> courseSeriesDtos2 = weidianBiz.getCourseSeries2ByItemId(items);
        logger.info(courseSeriesDtos2);

        //根据itemID获取serises(第三种方式)
        List<CourseSeriesDto> courseSeriesDtos3 = weidianBiz.getCourseSeries3ByItemId(iphone);
        logger.info(courseSeriesDtos3);

dao层:

 //获取商品对应的课程(第一种方式)
    public List<CourseSeriesDto> getCourseSeriesByItemId(@Param("itemIdList")List<String> itemIdList);

    //获取商品对应的课程(第二种方式)
    public List<CourseSeriesDto> getCourseSeries2ByItemId(@Param("itemIds")String itemIds);

    //获取商品对应的课程(第三种方式)
    public List<CourseSeriesDto> getCourseSeries3ByItemId(@Param("iphone")String iphone);

xml层:

 <!-- 根据item查询课程  第一种方式 -->
    <!--SELECT * FROM edu_course_series WHERE item_id=#{item_id} AND deleted=1-->
    <select id="getCourseSeriesByItemId" resultType="com.haiziyouke.service.dto.CourseSeriesDto">

        select * from edu_course_series  where  item_id in
        <foreach item="item" index="index" collection="itemIdList" open="(" separator="," close=")">
          #{item}
        </foreach>
       AND deleted=1
    </select>

    <!-- 根据item查询课程  第二种方式 -->
    <!--SELECT * FROM edu_course_series WHERE item_id=#{item_id} AND deleted=1-->
    <select id="getCourseSeries2ByItemId" resultType="com.haiziyouke.service.dto.CourseSeriesDto">

        select * from edu_course_series where item_id in (#{itemIds})  AND deleted=1
    </select>



    <!-- 根据item查询课程  第s三种方式 -->
    <!--SELECT * FROM edu_course_series WHERE item_id=#{item_id} AND deleted=1-->
    <select id="getCourseSeries3ByItemId" resultType="com.haiziyouke.service.dto.CourseSeriesDto">

        select * from edu_course_series  where  item_id in (SELECT item_id FROM steam_wd_order WHERE user_phone=#{iphone} OR phone=#{iphone}) AND deleted=1
    </select>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大神们都说GreenDao性能最好,使用方便,最近在做一个项目,刚好用到操作本地数据库,so机缘巧合,开始学习Gr...
    冯奕欢阅读 10,782评论 2 7
  • 这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring ...
    杂货铺老板阅读 1,443评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,678评论 25 708
  • go提供了一种叫map的数据结构,可以翻译成映射,对应于其他语言的字典、哈希表。借助map,可以定义一个键和值,然...
    songleo阅读 37,001评论 6 29
  • 文/熠歆 今早9.13从陆良出发,“我们以为”的火车站与高铁站,幸好艳的爸爸开车送我们来高铁站,还有一路的导航,不...
    熠歆阅读 1,160评论 5 4