Mapper.xml
## 获取枚举类参数
## or 记得+()
```
<if test="engineerRegistrationDTO.engineerRegistrationStatus.toString().equals('BE_APPROVE')">
AND (engineer_registration_status = 'BE_APPROVE' or engineer_registration_status = 'REJECTED')
</if>
<if test="engineerRegistrationDTO.engineerRegistrationStatus.toString().equals('APPROVED')">
AND engineer_registration_status = 'APPROVED'
</if>
```
## <if long判断是否为空
```
<if test="engineerRegistrationDTO.id!=null">
AND id = #{engineerRegistrationDTO.id}
</if>
```
## <if string判断是否为空 及like查询
```
<if test="@cn.hutool.core.util.StrUtil@isNotBlank(engineerRegistrationDTO.address)">
AND er.address like concat('%',#{engineerRegistrationDTO.address},'%')
</if>
```
## foreach 使用
![image.png](https://cos.easydoc.net/31477061/files/kr5ryu2h.png)
```
<select id="selectMediaURL" resultType="com.zhuyankeji.jhi.service.dto.KeyURLDTO">
select id,url from media
WHERE id IN
<foreach collection="mediaIds" item="mediaId" open="(" close=")" separator=",">
#{mediaId}
</foreach>
</select>
```
## 参考完整mapper.xml
```
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhuyankeji.persistence.mapper.EngineerRegistrationWtlMapper">
<select id="matchConditionsAll" resultType="com.zhuyankeji.jhi.service.dto.EngineerRegistrationDTO">
select
er.id AS id ,
er.code AS code ,
er.name AS name ,
er.area_code AS areaCode ,
er.address AS address ,
er.construction_media_ids AS constructionMediaIds,
er.construction_price AS constructionPrice ,
er.engineer_registration_status AS engineerRegistrationStatus ,
er.attach_media_ids AS attachMediaIds ,
er.rejected_reason AS rejectedReason ,
er.approver_id AS approverId ,
(select CONVERT(nickname USING utf8mb4) from t_sys_user where id =er.approver_id ) AS username,
DATE_FORMAT(er.start_time,'%Y-%c-%d') AS startTimeStr ,
DATE_FORMAT(er.end_time,'%Y-%c-%d') AS endTimeStr ,
er.proxy_salary_merchant_code AS proxySalaryMerchantCode,
er.attach_media_type AS attachMediaType,
psm.merchant_name AS proxySalaryMerchantCodeName
from engineer_registration er
left JOIN proxy_salary_merchant psm on er.proxy_salary_merchant_code=psm.code
WHERE 1=1
<if test="@cn.hutool.core.util.StrUtil@isNotBlank(engineerRegistrationDTO.name)">
AND er.name like concat('%',#{engineerRegistrationDTO.name},'%')
</if>
<if test="@cn.hutool.core.util.StrUtil@isNotBlank(engineerRegistrationDTO.address)">
AND er.address like concat('%',#{engineerRegistrationDTO.address},'%')
</if>
<if test="engineerRegistrationDTO.id!=null">
AND er.id = #{engineerRegistrationDTO.id}
</if>
<if test="@cn.hutool.core.util.StrUtil@isNotBlank(engineerRegistrationDTO.proxySalaryMerchantCode)">
AND er.proxy_salary_merchant_code = #{engineerRegistrationDTO.proxySalaryMerchantCode}
</if>
</select>
<select id="selectMediaURL" resultType="com.zhuyankeji.jhi.service.dto.KeyURLDTO">
select id,url from media
WHERE id IN
<foreach collection="mediaIds" item="mediaId" open="(" close=")" separator=",">
#{mediaId}
</foreach>
</select>
<select id="mobileTerminalAll" resultType="com.zhuyankeji.jhi.service.dto.EngineerRegistrationDTO">
select
id AS id ,
code AS code ,
name AS name ,
area_code AS areaCode ,
address AS address ,
construction_media_ids AS constructionMediaIds,
construction_price AS constructionPrice ,
engineer_registration_status AS engineerRegistrationStatus ,
attach_media_ids AS attachMediaIds ,
rejected_reason AS rejectedReason ,
approver_id AS approverId ,
(select CONVERT(nickname USING utf8mb4) from t_sys_user where id =engineer_registration.approver_id ) AS username,
start_time AS startTime ,
end_time AS endTime ,
proxy_salary_merchant_code AS proxySalaryMerchantCode,
attach_media_type AS attachMediaType
from engineer_registration
WHERE 1=1
<if test="engineerRegistrationDTO.id!=null">
AND id = #{engineerRegistrationDTO.id}
</if>
<if test="@cn.hutool.core.util.StrUtil@isNotBlank(engineerRegistrationDTO.proxySalaryMerchantCode)">
AND proxy_salary_merchant_code = #{engineerRegistrationDTO.proxySalaryMerchantCode}
</if>
<if test="@cn.hutool.core.util.StrUtil@isNotBlank(engineerRegistrationDTO.nameOrAddress)">
AND ( name like concat('%',#{engineerRegistrationDTO.nameOrAddress},'%') or
address like concat('%',#{engineerRegistrationDTO.nameOrAddress},'%'))
</if>
<if test="engineerRegistrationDTO.engineerRegistrationStatus.toString().equals('BE_APPROVE')">
AND (engineer_registration_status = 'BE_APPROVE' or engineer_registration_status = 'REJECTED')
</if>
<if test="engineerRegistrationDTO.engineerRegistrationStatus.toString().equals('APPROVED')">
AND engineer_registration_status = 'APPROVED'
</if>
</select>
</mapper>
```