当deveui什么都不输,传到后台的是空串"",因为js中是这样写的
var deveui = $("#dev_lc_deveui").val(); //是空串""
注意:var deveui; //是undefined,传到后台是null
过滤条件
<if test='p.deveui != null'>
AND t.DEVEUI = #{p.deveui, jdbcType=VARCHAR}
</if>
由于没有加空串判断,所以出现了AND t.DEVEUI = ?结果查不到值
SELECT
t.DEVEUI AS deveui,
t.DEVTYPE AS devType,
t.ORDNO AS ordNo,
t.CLAANO AS claaNo,
t.DEVSTATUS AS devStatus,
t.OPTIME AS opTime,
t.REMARK AS remark,
t.PROJECTID AS projectid,
t.ADDRESS AS address,
t.GPSLAT AS gpslat,
t.GPSLNG AS gpslng,
t.GPSALT AS gpsalt
FROM osmdb.t_osm_dev t
WHERE 1 = 1
AND t.DEVEUI = ?
ORDER BY t.CLAANO, t.ORDNO, t.DEVEUI
LIMIT ? OFFSET ?
加了空串判断,则deveui不会出现
<if test='p.deveui != null and p.deveui != ""'>
SELECT
t.DEVEUI AS deveui,
t.DEVTYPE AS devType,
t.ORDNO AS ordNo,
t.CLAANO AS claaNo,
t.DEVSTATUS AS devStatus,
t.OPTIME AS opTime,
t.REMARK AS remark,
t.PROJECTID AS projectid,
t.ADDRESS AS address,
t.GPSLAT AS gpslat,
t.GPSLNG AS gpslng,
t.GPSALT AS gpsalt
FROM osmdb.t_osm_dev t
WHERE 1 = 1
ORDER BY t.CLAANO, t.ORDNO, t.DEVEUI
LIMIT ? OFFSET ?
-----------------------------------------------------------------------------
点击修改,把以前remark的值删了,什么都不输入,进行update,传到后台的是空串"",
UPDATE osmdb.t_osm_dev t
SET t.DEVTYPE = ?,
t.ORDNO = ?,
t.CLAANO = ?,
t.DEVSTATUS = ?,
t.OPTIME = ?
WHERE t.DEVEUI = ?
由于被osmDev.remark != ""过滤
<if test='osmDev.remark != null and osmDev.remark != "" '>
t.REMARK = #{osmDev.remark, jdbcType=VARCHAR},
</if>
没有出现在update语句中
去掉osmDev.remark != "",则remark出现
UPDATE osmdb.t_osm_dev t
SET t.DEVTYPE = ?,
t.ORDNO = ?,
t.CLAANO = ?,
t.DEVSTATUS = ?,
t.OPTIME = ?,
t.REMARK = ?
WHERE t.DEVEUI = ?
----------------------------------------------------------------------------------
点击修改,把以前remark的值删了,输入一大堆空格,进行update,传到后台的是空串" ",
后台过滤条件
<if test='osmDev.remark != null and osmDev.remark != "" '>
t.REMARK = #{osmDev.remark, jdbcType=VARCHAR},
</if>
结果过滤不掉,说明""和" "不是一个东西
----------------------------------------------------------------------------------
当输入"",过滤条件
<if test='osmDev.remark != null and osmDev.remark != "" '>
t.REMARK = #{osmDev.remark, jdbcType=VARCHAR},
</if>
我本以为会被过滤掉,结果没有,把""保存进去了
传到后台的参数是"""",说明这不是空串,所以没有过滤掉
https://blog.youkuaiyun.com/th_datou/article/details/39477157