天天看點

Mybatis mapper又傳遞數組又傳遞單個值 *

随便從項目裡面摘出來一個代碼片段記錄一下

/**
   * @param: queryStatus 查詢狀态  0 是查詢生日  1 是成交紀念日  2是查詢其它類型定時任務
   * @Author: 張俊傑 2020年09月09日 11:08
   */
  List<CustInfoDTO> selectCustListByCustomerGroupCode(
      @Param("customerGroupCodeArray") String[] customerGroupCodeArray,
      @Param("queryStatus") String queryStatus

  );      
<!--

     查詢條件我先注釋掉了, 為了模拟參數用的,等正式資料到位了再給查詢條件放開.
     需求:根據二級群組id去查詢 目标使用者數量  , 根據身份證号碼去重,我在代碼裡面去做.
    -->
    <select id="selectCustListByCustomerGroupCode"
            resultType="com.datangwealth.datazt.entity.dto.CustInfoDTO">
        SELECT a.CUST_CODE as custCode,
        b.TAG_L2_ID,
        c.STATEDATE,
        ORDERID,
        a.CUST_NAME,
        a.CERTNO,
        CERTNAME,
        MOBILE,
        PRO_CODE,
        PRO_NAME,
        STATE_TIME,
        INPUT_TIME,
        (SELECT WM_CONCAT(b.TAG_L2_ID)
        FROM DMA_TAG_CUST_LABEL a1
        LEFT JOIN DMA_TAG_SUBJECT_SPLIT b1
        ON a1.tag_id = b1.tag_id
        WHERE a1.CUST_CODE = a.CUST_CODE
        and b1.TAG_L2_ID is not null
        ) as tagIdArrayStr

        FROM DMA_CUST_INFO c
        inner join
        DMA_TAG_CUST_LABEL a
        on c.CUST_CODE = a.CUST_CODE
        inner JOIN DMA_TAG_SUBJECT_SPLIT b
        ON a.tag_id = b.tag_id
        where 1=1
        and c.STATE_TIME is not null

        <if test="queryStatus =0">
            and to_char(sysdate, 'mmdd') = substr( a.CERTNO, 11, 4)
        </if>
        <if test="queryStatus =1">
            and to_char(sysdate, 'mmdd') = substr(c.STATE_TIME, 5, 8)
        </if>

        and b.TAG_L2_ID IN
        <foreach collection="customerGroupCodeArray" item="customerGroupCode" separator="," open="(" close=")">
            #{customerGroupCode}
        </foreach>

    </select>      

繼續閱讀