myBatis对于Integer类型传0问题
最近碰到一个特别奇葩的问题就是在MyBatis使用的时候,修改为Integer类型的字段传0步修改的问题,记录一下,以后别忘记了
原因就是:我们传0的时候默认的给我们解析成 “” (空字符串)了。在我们xml中判断的时候直接条件拦截
<if test="num!=null and ''!=num">
AND s.num= #{num}
</if>
解决办法,就是把判断空字符串去掉就可以了
<if test="num!=null">
AND s.num= #{num}
</if>
修改成功
2. mysql函数生成唯一字段的主键id时候会重复
upper(CONCAT(REPLACE(UUID(),'-',''),substring(UNIX_TIMESTAMP(now()),7,4))) id,
我们在写sql的时候一般都会用到先查询在插入的sql,这个时候插入的主键id不能重复,我们都用到了函数,但是使用上面的这个方法会直接报错,主键冲突,因为在生成的时候主键id一致了。
解决办法:
upper(CONCAT(REPLACE(MD5(UUID()),'-',''),substring(UNIX_TIMESTAMP(now()),7,4))) id,
MD5(UUID()); 防止生成的唯一id一致。