记录遇到的问题

数据库和JavaBean的类型不一致导致精度丢失

@Data
public class Nav {
    private String rate;
}

@Repository
public interface NavMapper {
    @Select("select rate RATE from nav")
    Nav find();
}
 @RequestMapping("/hot")
    public Nav getHot(@RequestParam @Valid String id) {
        //return userService.queryNav().getRate();
        return userService.queryNav();
    }

而数据库里的值为

该字段在数据库的类型为number,且值为浮点数,而JavaBean里对应的字段为String,所以在赋值的时候精度丢失,在不改变JavaBean的字段类型的前提下,我们可以在sql中用to_char将查询的值转为字符串类型。

select to_char(rate,'fm9999990.0000000') from nav

修改常量后的class文件

Java将常量保存在常量池中(jdk1.7在堆的永久代中,jdk1.8后改为方法区的元空间)。在项目中,一般会有常量表,其他类会引用该表中的产量,如果对常量表进行了修改和重新编译,引用这些常量的类的class不重新编译是不会发生改变的,依然引用的是修改之前的常量。原因:通过反编译文件发现,常量在class文件中直接被替换成值了,而不是java文件里的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值