方法 oracl.sql.Timestamp转java.util.Date

  借助basicName获取timestamp字段,MySQL返回java.sql.Timestamp,而Oracle返回oracle.sql.Timestamp;

  timestampValue继承了java.util.Date,所以可以借此来讲oracle中的timestamp字段在jdbc的获取方式下,转换为util下的Date类并格式化,then done!

复制代码
/**
     * 转换映射表映射值
     * 
     * @param obj
     *            转换对象
     * @param dataType
     *            转换类型 1-字符串;2-小数;3-整型;4-日期时间
     * @param dataFormat
     *            转换格式
     * @param jsonMap
     *            映射数据
     * @return
     * @throws SQLException
     */
    private Object transferMappingValues(Object obj, int dataType, String dataFormat, Map<String, String> jsonMap)
        throws SQLException {
        // 1.判断类型;2.转换格式;3.取关联值
        String basicName = obj.getClass().getSimpleName();
        switch (dataType) {
            case 1:
            case 3:
                // 字符串,整型:不需转格式
                break;
            case 2:
                // 小数,默认不截取
                if (obj == null || "".equals(obj)) {
                    // 数据库无值且无默认值,赋值0
                    return 0;
                }
                if (!StringUtil.isNullOrEmpty(dataFormat)) {
                    int decimal = Integer.parseInt(dataFormat);
                    if (decimal >= 0) { 
                        String format = String.format("%.0" + decimal + "f", Double.parseDouble(obj.toString()));
                        obj = (StringUtil.isNullOrEmpty(format) ? obj : Double.parseDouble(format));
                    }
                }
                break;
            case 4:
                // 日期时间
                if (obj == null || "".equals(obj)) {
                    // 数据库无值且无默认值,赋值‘’
                    return "";
                }
                if ("Date".equals(basicName)) {
                    if (!StringUtil.isNullOrEmpty(dataFormat)) {
                        obj = new SimpleDateFormat(dataFormat).format(obj);
                    }
                }
                // mysql
                if ("Timestamp".equals(basicName)) {
                    Date date = (Timestamp)obj;
                    if (!StringUtil.isNullOrEmpty(dataFormat)) {
                        obj = new SimpleDateFormat(dataFormat).format(date);
                    }
                }
                // oracle
                if ("TIMESTAMP".equals(basicName)) {
                    TIMESTAMP t = (TIMESTAMP)obj;
                    Date date = t.timestampValue();
                    if (!StringUtil.isNullOrEmpty(dataFormat)) {
                        obj = new SimpleDateFormat(dataFormat).format(date);
                    }
                }
                break;
            default:
                break;
        }
        return jsonMap.get(obj + "") == null ? StringUtil.getObjectByDataType(obj) : jsonMap.get(obj + "");
    }
复制代码

 

posted @   王晓鸣  阅读(1732)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示