最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis in foreach 雙層嵌套問題

 更新時間:2023年03月15日 15:03:52   作者:回首掏88  
這篇文章主要介紹了mybatis in foreach 雙層嵌套問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mybatis in foreach 雙層嵌套

需求:根據(jù)角色id,返回角色名稱,

入?yún)⑹荓ist<List> 類型的二維數(shù)組,需要返回一個對應(yīng)的集合,集合的元素是逗號分隔的字符串。

dao層代碼:

List<String> queryRoleName(List<List<Long>> list);

mapper代碼:

<select id="queryRoleName" parameterType="java.util.List" resultType="string">
        <foreach collection="list" item="item" separator="union all">
            select ifnull(group_concat(role_name),'') roleName from sys_role where role_id in
            <if test="item!=null and item.size()>0">
                /*就像java for循環(huán)嵌套一樣,外層的item的屬性值和內(nèi)層的collection屬性值需要保持一致*/
                <foreach collection="item" item="roleId" separator="," open="(" close=")">
                    #{roleId}
                </foreach>
            </if>
            <if test="item==null">
                (null)
            </if>
        </foreach>
</select>

說明:

1、因?yàn)檫@里業(yè)務(wù)需求,可能出現(xiàn)傳參角色id為null的情況,所以加了if動態(tài)標(biāo)簽判斷item元素是否為空,并對返回結(jié)果的null值,用mysql的ifnull,對null轉(zhuǎn)了空字符串處理

2、逗號分隔分組函數(shù) group_concat()

效果:

入?yún)ⅲ?/strong>

{{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 ......

查詢結(jié)果:

mybatis foreach標(biāo)簽進(jìn)行嵌套插入

場景說明

現(xiàn)有一插入操作,要求按照指定格式進(jìn)行插入操作。具體格式如下:

上面各對象中對應(yīng)的表字段:

處理過程

第一層實(shí)體類:

public class StudioCourseAddUpdateDto implements Serializable {
    private static final long serialVersionUID = 4862281856286977081L;

    private int studioId;

    private List<CourseInfoDto> courseInfoDtoList;

   // 省略get/set
}

第二層實(shí)體類:

public class CourseInfoDto implements Serializable {

    private static final long serialVersionUID = -2975706030949793781L;

    private int courseType;

    private List<CourseDetailInfoDto> courseDetailInfoDtoList;

	// 省略get/set
}

第三層實(shí)體類:

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<courseAddUpdateDto> courseAddUpdateDtoList);

配置文件:

<insert id="bathAddStudioCourseInfo" parameterType="com.it.tao.CourseAddUpdateDto">
    <foreach collection="courseAddUpdateDtoList" item="courseAddUpdateDto" >
        <foreach collection="courseAddUpdateDto.courseInfoDtoList" item="courseInfoDto"  >
            <foreach collection="courseInfoDto.courseDetailInfoDtoList" item="courseDetailInfoDto" >
                INSERT INTO card_course (course_id,studio_id,course_type,fee_count) VALUES
                (#{courseDetailInfoDto.courseId},#{courseAddUpdateDto.studioId},#{courseInfoDto.courseType},#{courseDetailInfoDto.feeCount});
            </foreach>
        </foreach>
   </foreach>
</insert>

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

浑源县| 信宜市| 伊吾县| 岐山县| 黄山市| 平罗县| 望都县| 桦川县| 德化县| 深圳市| 铜梁县| 定边县| 宾川县| 红河县| 甘肃省| 南投县| 米泉市| 长武县| 富顺县| 兰西县| 建阳市| 同德县| 宜宾县| 苏尼特右旗| 航空| 临夏市| 皋兰县| 兴国县| 靖宇县| 隆化县| 江孜县| 秭归县| 抚顺县| 图木舒克市| 石楼县| 钟山县| 锡林郭勒盟| 驻马店市| 沭阳县| 墨竹工卡县| 荣昌县|