今天在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
建议:像这种码值操作最好还是使用字符串类型数据比较好。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/62183.html