mybati怎么处理为nul(number)的值

我们都知道mybatis是orm框架,那么数据库对应的类型跟实体对应的类型是一致的。但是有很多同学们还是有很多误区的,不知道为什么会这样。(java==oracle的情况分析)

(1)为什么有时候我都是用同样的返回类型怎么有一个会报错,一个不会。

上sql,最简单的方式。

<select    id='xxx'    resultType='int'>这种方式不会报错。
select    count(*)    from    tablename;
</slect>

<select    id='xxx'    resultType='java.lang.integer'>这种方式不会报错
select    age    from    tablename    where    id='xxx';==age  为number类型
</slect>

<select    id='xxx'    resultType='int'>这种方式会存在报错
select    age    from    tablename    where    id='xxx';==age  为number类型
</slect>

请大家好好想想,其实这三种种的方式是有区别的。

解析:因为第二跟第三种情况是有可能为null的,假如id不存在呢,返回的数据就为null,int不能null哦。

第一种,因为有cout的函数。可以保证返回的数据是number类型,大不了为0.

第二种情况,因为接收参数为integer类型,包装类是可以为null的。

第三种情况,int类型,假如接收的数据为null是会报错的。

(2)怎么处理可能为null的数据呢。

第一种:返回的参数为integer类型。可以保证不管什么情况下都不出发生错误。

需要注意的是,在后台记得转换成int类型的时候,记得要转换,

第二种:把数据处理成number的类型即可

select NVL(SUM(MONEY) ,0) from tb where id='xxx'全都在NVL这儿起作用。 推荐用这种

select NVL(MONEY,0) from tb where id='xxx'。      这种不一定有效

这两种的写法是有区别的.假如id为xxx的数据是存在的,那么直接用nvl的函数来判断是否为空是起作用的。

假如id为xxx的数据不存在的话,直接用nvl的函数不起作用哦。要一个max()的函数处理在用nvl的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值