价格为什么不都使用BigDecimal?

来源:6-1 秒杀模型管理--活动模型创建

浪潮之巔

2018-12-25 16:32

此处和前面涉及价格的地方,Dao层和库里的类型是Double,Service和Controller层是BigDecimal,为什么不全都用BigDecimal?从库中取出到Dao层Double不会丢精吗?

写回答 关注

3回答

  • 随_忆
    2018-12-25 21:28:51
    已采纳

    老师想都用BigDecimal的,奈何数据库不支持啊。Service和Controller层是可控的,自己写的Model类,当然用BigDecimal了。Dao层类是mybatis-generator插件生成的,没法用BigDecimal,因为Mysql数据库没有这个数据类型。当然你可以认为Mysql的Decimal可以和Java的BigDecimal一致,问题是,mybatis-generator把Mysql的Decimal生成了Long类型,明显不适合做价格字段。

    浪潮之巔 回复慕妹5204...

    double运算会丢精,不准确。

    2018-12-27 11:00:24

    共 3 条回复 >

  • ghoststill
    2019-01-02 16:39:04

    一般人民币单位都是分!!!!!!!用Long 不会有精度的问题,用String 也可以~

  • 叶0528
    2018-12-26 17:20:57

    因为老师数据库decimal(10,0)这样写的,所以生成实体类是Long。

    如果数据库设计为这样: 

    `price` decimal(10,2) DEFAULT NULL,

    生成实体类会是

    private BigDecimal price;

    不是mybatis自动生成代码的锅。

    李鑫鑫lxx 回复龙虾三少

    为啥用 long ??? 不太明白

    2019-01-02 14:20:26

    共 2 条回复 >

SpringBoot构建电商基础秒杀项目

应用SpringBoot快速搭建拥有用户、商品、交易及秒杀活动的电商秒杀应用。

49290 学习 · 954 问题

查看课程

相似问题