解决MyBatis查询MySql的int类型字段默认返回0

今天在MySql中创建了一张数据表ctmp,其中一个字段 c_id 类型为 bigint(20)。通过mybatis插件生成代码:

#### 实体Entity
public class Ctmp{

    ...
    private long cId;
    ...

    (省略getter and setter 方法)
}

#### Mapper接口
public interface CtmpMapper {

    List<Ctmp> queryAll();
}

#### Mapper.xml 配置如下:

<select id="queryAll"  resultMap="Ctmp">
    select * from ctmp
</select>

数据表中 c_id 是非必填字段,默认值为 NULL.

 下面问题就来了,当数据库中这个字段没有值时,查询结果返回的值默认为 0.

        其实我这个是要当做码值编号用,页面进行翻译的,压根没有 码值为 0 的数据,当然,有也是不正确的。

尝试了两种方法成功解决问题:

方法一:在数据库中,设置默认值为 “”,即选择第一个值。实际证明没有解决问题。

 方法二:修改实体类字段的数据类型,将 long 修改为 Long,即修改为包装类,基础数据类型的包装类就是一个对象,可以存储 Null.经测试,问题解决,返回结果确实为 null.

private Long cId;

包装类: long -> Long, int -> Integer,  short -> Short, byte -> Byte 

建议:像这种码值操作最好还是使用字符串类型数据比较好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值