java:BigDecimal还是Integer有什么区别??Oracel保存的数值类型对应java,java中用什么类型好?

java中 与 Oracle数据库对应的数据类型,当数据库保存为Number,或者别的类型,java中用什么类型好?我发现,我们的后台,int 几乎不要用到诶,都是用Integer什么原因?
最新回答
你瞎啊撞我心上了

2025-03-30 11:35:28

第一个问题:
二者的区别就是运算后的精度问题,这个在对结果精度要求很高的情况下使用,如银行系统,电子商务交易。
第二个问题:
Number可以对应java中任意的数字类型,如整型和浮点型,java中选取当然还是和业务有关啦。
第三个问题:
最后一点说的就是开发经验了,有经验的人都这么干,为的就是能更好更直接的与数据库映射,更方便的使用框架进行开发如hibernate。
追问
我想再问:当我用BigDecimal 来定义实体类时,报了个错:
org.hibernate.PropertyAccessException
后来我将类型改成Integer,又能成功执行了。你觉得这是什么原因??

数据库里面为Number类型,没有小数。
追答
Java数据类型	       Hibernate数据类型	标准SQL数据类型(不同的DB可能有所差异)
java.math.BigDecimal big_decimal NUMERIC
映射的配置出问题了,导致映射不过去。
追问
我在数据库里面碰到BigDecimal这种类型了诶,这又是对应哪种类型,真是搞混了 !!
追答
你用的什么数据库了,哪有BigDecimal这种数据类型的,是不是DECIMAL啊?
追问
Oracle   是  Decimal ,哈哈
追答
你尽折腾我,这个可对应所有的数字类型 如整型和浮点型。
追问
借机再问一个,@Resource与@Autowired什么区别?
对高手而言,折腾一也下无所谓是吧,加分肯定的啦!
追答
@Autowire默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;
@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了.
追问
很清楚,真谢谢了。
春杞忆童言

2025-03-30 01:47:51

Integer是int的封装类,可以为null,所以映射一般为Integer,hibernate中也是这样的,推荐用封装类映射。
暴躁的喵

2025-03-30 00:37:20

在后台写实体类时,int与Integer都可以,建议使用Integer,一切皆对象。
各种坚强

2025-03-30 04:57:42

BigDecimal和Integer精度不同 ,int 默认值为0; Integer 可以为 null。
薄荷梦

2025-03-30 06:57:24

用Integer吧