工作小记2:MyBatis中遇到的小问题(一)

在日常工作中,接触到的orm框架最多得到是mybatis和mybatis plus。这篇文章记一下最近时间遇到的一些问题。后面有新问题还会继续记录。

实体类字段类型问题。

之前遇到一个问题,主要是应用钉钉审批流时,业务对象在数据库的值被改写。

审批流的业务就是新增接口处理完前置业务逻辑后,保存业务数据到数据库,然后发一条消息。消息中主要是发起审批流,发起审批流后会对之前保存的业务数据进行修改,主要是修改一些审批流的一些字段,审批流ID呀,审批流创建人,审批流状态这些。

然后问题来了,有几个布尔值,业务逻辑设置好了true后,一过审批流就被改成false。因为审批流发起的业务通过MyBatis生成了数据库对象,然后去修改了数据库的值。最开始我以为是数据库默认值的问题,后面发现不行。最后打断点发现,问题出在业务类的字段类型。

一般来说数据库类都是包装类型,但是这类的几个布尔值的类型用的是基元类型,然后MyBatis看到这个类型直接赋值false。然后MyBatisPlus修改的时候,这几个值就覆盖掉了正确的true值。

这个问题,主要是大意,另外是不了解这个小知识。

MyBatis在处理基元类型(如int, long, float, double等)时,如果数据库字段为NULL,则会使用基元类型的默认值(如int的默认值为0)。如果你希望MyBatis在获取结果时,对于基元类型字段如果数据库值为NULL时能够映射为null而不是默认值,你可以通过配置typeHandlers来实现。

类型转换问题

公司有个新人同事,有一天找我说他的接口数据一直不对,找我帮忙看看。

问题是这样的:在XML中写SQL语句时,if标签中非空判断的时候写的是 != null and != ’ ‘。有些朋友可能已经想到了。这个字段是一个Integer类型的值,在MyBatis里面,如果Integer的值是0,那么在生成查询语句的判断条件中,会被转成’ ',这个时候你就发现了,是0的时候,会判断会空导致查询条件进不去,最后查询数据一直不对。

这是一个小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值