mysql到JSP之间数据格式转换

经常有这样的情况,从数据库中获取的数据格式并不是我们想在JSP页面上展示的,我推荐给大家以下三种mysql到JSP之间数据转换格式。

数据库sql直接转换

有一些数据,我们可以直接通过sql直接转换,不过一般处理格式比较单一的内容。

convert(case m.stauts when 1 then '启用' when 2 then '停收新单' when 3 then '停用账户' end,char) stauts

这种形式不善于处理格式比较复杂的类型,不过便捷一次到位。

利用JSTL

JSTL的格式处理也相当不错,这里推荐一篇文章JSTL标签 参考手册

<fmt:formatNumber value="${item.order_price}" pattern="#,##0.00#"/>

这种形式需要前后台数据遵循jstl的标签格式。

控制端进行转换

这种方式主要是利用controller对获取的数据进行转换,替换为前端需要的格式,然后供前端显示,这里我详细说一下。

先看看后台数据:

id uid username ip logintime logoutime
1 1 00010001 127.0.0.1 1434679452651 1435021823460


然后我们通过sql语句进行获取原始数据

<select id="getMemLoginfoList" resultType="hashmap" parameterType="map"> select m2.uid, convert(m2.username,char) username, m2.ip ip, m2.logintime logintime, m2.logoutime logoutime, (m2.logoutime-m2.logintime) onlinetime from loginfo </select>


然后我们通过controller进行转换

List<HashMap> memloginfolist = this.memLoginfoMapper.getMemLoginfoList(vo, vo.createRowBounds());
            for (HashMap map : memloginfolist) {
                String logintime = DateUtil.formatTimeMillis(map.get("logintime").toString());
                String logoutime = DateUtil.formatTimeMillis(map.get("logoutime").toString());
                String onlinetime = DateUtil.formatTimeInterval(map.get("onlinetime").toString());

                map.put("logintime", logintime);
                map.put("logoutime", logoutime);
                map.put("onlinetime", onlinetime);
            }
public static String formatTimeInterval(String time) {
        long timeInterval = Long.parseLong(time);

        long day = 0;
        long hour = 0;
        long min = 0;
        long sec = 0;

        day = timeInterval / (24 * 60 * 60 * 1000);
        hour = (timeInterval / (60 * 60 * 1000) - day * 24);
        min = ((timeInterval / (60 * 1000)) - day * 24 * 60 - hour * 60);
        sec = (timeInterval / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);

        StringBuilder result = new StringBuilder();
        if (day > 0) {
            result.append(day);
            result.append("天");
        }

        if (hour > 0) {
            result.append(hour);
            result.append("时");
        }

        if (min > 0) {
            result.append(min);
            result.append("分");
        }

        if (sec > 0) {
            result.append(sec);
            result.append("秒");
        }


        return result.toString();
    }


前端显示为
这里写图片描述

这种形式处理起来比较随意。

总结:之前我一直想写一个自定义的jstl标签,但是用起来更麻烦,所以就推荐上面这三种方式给大家。

你可能感兴趣的:(mysql,jsp,数据,格式)