第一种:
把多个参数封装在一个map里
service:
Map<String, Object> maps=new HashMap<>();
maps.put("advertisementId",adsAdvertisementForm.getAdsAdvertisement().getAdvertisementId());
maps.put("list",detailDates);
List<Map<String, Object>> tableDetailList = adsPositionManager.getSettleTableDetail(maps);
dao:
1
List<Map<String, Object>>getSettleTableDetail(Map<String,Object> map);
mappering.xml:
<select id="getSettleTableDetail" parameterType="map" resultType="map">
SELECT
ad.HOT_NUM AS hotNum,
ad.EXPOSURE_NUM AS exposureNum,
ad.DOWNLOAD_NUM AS downloadNum,
ade.CREATED_DATE AS createDate,
ade.IS_CLICK AS isClick,
ade.IS_DOWNLOAD AS isDownload,
ade.IS_EXPOSURE AS isExposure
FROM
ADS_ADVERTISEMENT ad
LEFT JOIN
ADS_ADVERTISEMENT_EXPOSURE ade
ON
ad.ADVERTISEMENT_ID=ade.ADVERTISEMENT_ID
WHERE
ad.ADVERTISEMENT_ID=#{advertisementId}
<if test="list != null ">
<foreach item="item" collection="list" open="" close="" index="">
and ade.CREATED_DATE LIKE concat(#{item},'%')
</foreach>
</if>
</select>
第二种使用注解:
dao:
AdsAdvertisement getAdvertisementByPeriodicationIdAndCreatedDateAndName (@Param("periodicationId") String periodicationId, @Param("createdDate") Date createdDate, @Param("name") String name);
mappering.xml:
<select id="getAdvertisementByPeriodicationIdAndCreatedDateAndName" resultType="cn.net.cnp.framework.pojo.AdsAdvertisement">
SELECT
ADVERTISEMENT_ID as advertisementId,
PERIODICATION_ID as periodicationId,
NAME as name,
CREATED_DATE as createdDate,
CREATED_USER_ID as createdUserId
FROM
ADS_ADVERTISEMENT
WHERE
PERIODICATION_ID=#{periodicationId}
<if test="name != null and name != ''" >
AND NAME =#{name}
</if>
<if test="createdDate != null " >
AND CREATED_DATE =#{createdDate}
</if>
AND IS_DELETE=FALSE
AND IS_ENABLE=TRUE
AND AUDIT_STATUS != 'UNDER_SHELF'
</select>