mybatis xml拼接 in查询时,请确保参数集合size>0

1 问题背景:现网日志有错误打印

  • 打印错误:打印sql语句错误: in ()
  • 原因:传了一个数组进去,然而这个数组可能是个空数组(size==0),导致无法拼接正确sql
  • 疑惑:
    • xml要判断吗?(mybatis xml对数组for循环拼接的sql),可如果判断,这个语句该怎么写?
    • xml可以处理,但是影响代码 可读性
    <if test="list == null  or list.size == 0">
    	1=2
    </if>
    <if test="list != null  and list.size > 0">
    	code in 
    	<foreach collection="list"  item="item" open="(" split="," close=")">
    		#{item}
    	</foreach>
    </if>
    
    • 所以如果封装了一个方法,参数为List, 调用该方法前判断一下参数是否为空,参数为空时,根据为空时,处理对应的业务返回(null,或者说 空对象)

2 平常有个不好的习惯,调用时不会考虑当前对象是不是null或者空,时间紧,就不写,时间充足就全写

还有个问题,不去深究获取的这个对象(不知道会不会是null),比如调用mybatis中mapper接口方法,根本不知道返回的是什么

(其实只要传个库里没有的参数,调用一下就好,测试用例没有用起来,间接阻碍了这种验证,启用应用相对比较繁琐,效率也低)
  • (成长==思考),思考那些你的边界,然后让它扩张

版权声明:本文为lanxing_huangyao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。