Oracle数据同步接口中,对于NUMBER、DATE类型数据,从resultSet中直接获取造成精度丢失的解决方案
2019-07-24 17:00
1206 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41885819/article/details/97137096
通过JDBC获取ORACLE数据库数据时,返回值统一都是ResultSet对象,就像存储过程中的游标,一行一行的读取数据。对于NUMBER和DATE类型的数据,如果java代码中直接用resultSet.getInt()、resultSet.getDate()等,往往会存在一些精度上的丢失。
- NUMBER类型
NUMBER数据类型既可以标识整数,也可以表示小数,所以大部分情况下表中的数字类型字段都直接用NUMBER表示,在java中通过JDBC获取时,通过resultSet.getBigDecimal()来接收对应字段的数据,可以有效防止数据精度丢失。
BigDecimal bigDecimal = resultSet.getBigDecimal(s.trim());
- DATE类型
ORACLE数据库中的DATE类型数据,可以只表示年月日,也可以加上时分秒,相对而言非常灵活。如果通过resultSet.getDate()获取数据,返回值为java.sql.Date,该类型对象只能表示年月日,精度丢失可能会非常严重。java中还有一个java.util.Date类型,该类型对象却可以表示年月日+时分秒。所以在java中通过JDBC获取时,先将字段按照TimeStampe对象处理,再转换成java.util.Date对象。
Timestamp timestamp1 = resultSet.getTimestamp(s.trim()); //加上空判断,防止空指针异常 if(timestamp1!=null){ long time = timestamp1.getTime(); //DateFormateUtil.formatDate方法在本地工具包中,将日期转换成对应字符串 filedData = DateFormateUtil.formatDate(new Date(time)); }
public static String formatDate(Date date) throws ParseException { //SimpleDateFormat 不能保证线程安全,所以不要声明为静态成员变量 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(date); }
相关文章推荐
- Mybatis 插入数据的时候Date类型,时间精度丢失
- 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案
- 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案
- java怎么获取从oracle数据库拿到的数据的某个字段的字段详情(字段类型如date、varchar2等,长度,精度)?
- 【解决方案】jison解决JS处理后台返回的Long型数据精度丢失
- oracle 中的数据类型:number(p,s) 和date类型(日期型数据)
- hibernate 保存oracle的date类型数据丢失时分秒
- java中的三元运算的运用, 特别是对于Long类型的数据的获取,特变的方便
- Spring boot处理Long类型的Json数据,前端调用精度丢失
- jQuery从数据库获取date类型数据格式化处理
- java 中ResultSet可以获取的数据类型及返回值类型列表
- 后台Long类型数据到前台出现精度丢失问题,以及时间格式化处理
- Oracle number类型查询精度丢失的解决方法
- SpringMvc如何传递获取Date类型数据
- js获取input中date类型数据
- [置顶] double、float类型进行运算造成精度丢失的问题解决
- 后端将Long类型数据传输到前端出现精度丢失的问题(品优购订单号orderId精度丢失问题)
- Spring boot处理Long类型的Json数据,在Js代码调用时精度丢失的问题
- Feign接口JSON数据转Date类型数据慢8小时问题
- Oracle数据同步接口,增量数据从ERP系统到本地临时表封装解决方案