课程
/后端开发
/Java
/SpringBoot构建电商基础秒杀项目
此处和前面涉及价格的地方,Dao层和库里的类型是Double,Service和Controller层是BigDecimal,为什么不全都用BigDecimal?从库中取出到Dao层Double不会丢精吗?
2018-12-25
源自:SpringBoot构建电商基础秒杀项目 6-1
正在回答
老师想都用BigDecimal的,奈何数据库不支持啊。Service和Controller层是可控的,自己写的Model类,当然用BigDecimal了。Dao层类是mybatis-generator插件生成的,没法用BigDecimal,因为Mysql数据库没有这个数据类型。当然你可以认为Mysql的Decimal可以和Java的BigDecimal一致,问题是,mybatis-generator把Mysql的Decimal生成了Long类型,明显不适合做价格字段。
浪潮之巔 提问者
慕妹5204827 回复 浪潮之巔 提问者
浪潮之巔 提问者 回复 慕妹5204827
一般人民币单位都是分!!!!!!!用Long 不会有精度的问题,用String 也可以~
因为老师数据库decimal(10,0)这样写的,所以生成实体类是Long。
如果数据库设计为这样:
`price` decimal(10,2) DEFAULT NULL,
生成实体类会是
private BigDecimal price;
不是mybatis自动生成代码的锅。
龙虾三少
李鑫鑫lxx 回复 龙虾三少
举报
应用SpringBoot快速搭建拥有用户、商品、交易及秒杀活动的电商秒杀应用。
1 回答为什么数据库中price字段要使用double,使用带小数点的decimal不是更合理吗?
1 回答自动生成的DO一直是BigDecimal类型的怎么回事
1 回答validator使用的javax.validation.Validator,为什么要引入hibernate validator呢
1 回答createItem那里为什么不知道返回model呢 而是要使用getItem方法
1 回答我总感觉Controller继承一个异常处理类很怪,为什么不使用ControllerAdvice?