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> ```