问答详情
源自:6-1 秒杀模型管理--活动模型创建

价格为什么不都使用BigDecimal?

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

提问者:浪潮之巔 2018-12-25 16:32

个回答

  • 随_忆
    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类型,明显不适合做价格字段。

  • 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自动生成代码的锅。