mysql到JSP之间数据格式转换

  1. 云栖社区>
  2. 博客>
  3. 正文

mysql到JSP之间数据格式转换

沉默王二 2015-06-23 12:47:06 浏览404
展开阅读全文
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/46604563

经常有这样的情况,从数据库中获取的数据格式并不是我们想在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标签,但是用起来更麻烦,所以就推荐上面这三种方式给大家。

网友评论

登录后评论
0/500
评论
沉默王二
+ 关注