mybatis中使用statementType="STATEMENT"实现动态传入字段名时一直报语句错误,但实际上语句并没有毛病,爬了一天坑才找到问题,记录一下。
整条语句中里所有传入的值都要使用${xxx},不能使用#{xxx}。
<select id="listMap" resultMap="Goodsbarcodes" parameterType="java.util.Map" statementType="STATEMENT"> select * from goodsbarcode where serialNo like '%${serialno}%' and sku like '%${sku}%' <if test="timetype != null and timetype!='' and fristTimes != null and fristTimes!='' and lastTimes != null and lastTimes!=''" > and ${timetype} BETWEEN '${fristTimes}' and '${lastTimes}' </if> <if test="state != null and state!='' and state == '0'.toString()" > and ${stateName} ='${paramTemp}' </if> <if test="state != null and state!='' and state == '1'.toString()" > and ${stateName} !='${paramTemp}' </if> <if test="state != null and state!='' and state == '2'.toString()" > and ${stateName} !='${paramTemp}' </if> <![CDATA[ limit ${page},${rows} ]]> </select>