mysql创建类型int,MyBatis传0的时候不修改 ,mysql函数生成唯一字段的主键id时候会重复

在使用MyBatis时,遇到Integer类型字段传0导致不更新的问题,原因是0被解析为空字符串。解决方法是去除XML中的空字符串判断。另外,MySQL中使用函数生成唯一主键时出现重复,可以使用MD5(UUID())来确保生成的ID唯一。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值