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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值