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接口方法,根本不知道返回的是什么
(其实只要传个库里没有的参数,调用一下就好,测试用例没有用起来,间接阻碍了这种验证,启用应用相对比较繁琐,效率也低)
- (成长==思考),思考那些你的边界,然后让它扩张