Mybatis使用statementType="STATEMENT"实现动态传入表名或字段名

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> 
原文地址:https://www.cnblogs.com/shoose/p/8478750.html