验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

mybatis in foreach双层嵌套问题怎么解决

阅读:1024 来源:乙速云 作者:代码code

mybatis in foreach双层嵌套问题怎么解决

      mybatis in foreach 双层嵌套

      需求:根据角色id,返回角色名称,

      入参是List 类型的二维数组,需要返回一个对应的集合,集合的元素是逗号分隔的字符串。

      dao层代码:

      List queryRoleName(List> list);

      mapper代码:

      
              
                  select ifnull(group_concat(role_name),'') roleName from sys_role where role_id in
                  0">
                      /*就像java for循环嵌套一样,外层的item的属性值和内层的collection属性值需要保持一致*/
                      
                          #{roleId}
                      
                  
                  
                      (null)
                  
              
      

      说明:

      1、因为这里业务需求,可能出现传参角色id为null的情况,所以加了if动态标签判断item元素是否为空,并对返回结果的null值,用mysql的ifnull,对null转了空字符串处理

      2、逗号分隔分组函数 group_concat()

      效果:

      入参:

      {{null},{1,2},…}

      sql解析:

      select ifnull(GROUP_CONCAT(role_name),'') roleName from sys_role where role_id in(null)
      union all select ifnull(GROUP_CONCAT(role_name),'') roleName from sys_role where role_id in(1,2)
      union all ......

      查询结果:

      mybatis in foreach双层嵌套问题怎么解决

      mybatis foreach标签进行嵌套插入

      场景说明

      现有一插入操作,要求按照指定格式进行插入操作。具体格式如下:

      mybatis in foreach双层嵌套问题怎么解决

      上面各对象中对应的表字段:

      mybatis in foreach双层嵌套问题怎么解决

      处理过程

      第一层实体类:

      public class StudioCourseAddUpdateDto implements Serializable {
          private static final long serialVersionUID = 4862281856286977081L;
      
          private int studioId;
      
          private List courseInfoDtoList;
      
         // 省略get/set
      }

      第二层实体类:

      public class CourseInfoDto implements Serializable {
      
          private static final long serialVersionUID = -2975706030949793781L;
      
          private int courseType;
      
          private List courseDetailInfoDtoList;
      
      	// 省略get/set
      }

      第三层实体类:

      public class CourseDetailInfoDto implements Serializable {
          private static final long serialVersionUID = -1423166674509217993L;
      
          private int courseId;
      
          private String feeCount;
      
          // 省略get/set
      }

      mapper接口:

      int bathAddStudioCourseInfo(@Param("studioCourseAddUpdateDtoList") List courseAddUpdateDtoList);

      配置文件:

      
          
              
                  
                      INSERT INTO card_course (course_id,studio_id,course_type,fee_count) VALUES
                      (#{courseDetailInfoDto.courseId},#{courseAddUpdateDto.studioId},#{courseInfoDto.courseType},#{courseDetailInfoDto.feeCount});
                  
              
         
      
    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>