show-cloud(十四)寫複雜sql的例子,使用in

前面都是通過sql註解的方式來寫sql,但今天碰到了個比較複雜的sql,採用sql註解嘗試了幾次,最終還是以失敗告終,最終還是通過xml的方式來解決。
1、service的代碼內容:

  @Override
    public Map<String, String> getUserRelDepName(String ids) {
        Map<String,String> mapInfos=new HashMap<>();
        List<Long> sqlStr=CommonUtils.getLongList(ids,BaseEnum.BASE_REL_CHAR.getValue());
        List<SimpleUserRelDep> list=baseMapper.getUserRelDepName(sqlStr);
        for(SimpleUserRelDep simpleUserRelDep:list){
            mapInfos.put(simpleUserRelDep.getUserId()+"",simpleUserRelDep.getDepName());
        }
        return mapInfos;
    }

2、mapper的定義


    /**
     *獲取用戶關聯的部門信息
     * @param ids
     * @return
     */
    @SqlParser(filter = true)
    List<SimpleUserRelDep>  getUserRelDepName(List<Long> ids );

3、ManagerOperatorMapper.xml的定義:

	<!--用戶的關聯的部門的查詢結果-->
	<resultMap id="SimpleResultMap" type="org.go.show.users.dto.SimpleUserRelDep">
		<id column="ID" property="userId" jdbcType="BIGINT"/>
		<result column="DEP_ID" property="depId" jdbcType="BIGINT"/>
		<result column="DEP_NAME" property="depName" jdbcType="VARCHAR"/>
	</resultMap>

	<!--查詢用戶的關聯的部門信息-->
	<select id="getUserRelDepName"  resultMap="SimpleResultMap">
		select user.ID as ID,user.DEP_ID as DEP_ID,dept.`NAME` as DEP_NAME from GS_MANAGER_OPERATOR as user LEFT JOIN GS_MANAGER_DEPARTMENT as dept on user.DEP_ID=dept.ID WHERE user.ID IN
		<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
			#{item}
		</foreach>
	</select>

4、查詢結果臨時實體定義

package org.go.show.users.dto;

public class SimpleUserRelDep {

    private Long userId;
    //角色中文名
    private Long depId;
    //是否選中
    private String depName;

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Long getDepId() {
        return depId;
    }

    public void setDepId(Long depId) {
        this.depId = depId;
    }

    public String getDepName() {
        return depName;
    }

    public void setDepName(String depName) {
        this.depName = depName;
    }
}

發佈了154 篇原創文章 · 獲贊 22 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章