在Java中将数据库查询结果保存为List<Map>类型的JavaScript数组文件

将一些基本的、频繁使用的数据保存为js文件,不仅可以大大减少对服务器的访问,而且有效地改善用户的体验,浏览网页变得非常地流畅。这对提高整个web应用系统的质量非常有好处。以下方法用于将查询结果保存到js文件中。

这里以pvo查询结果为例。

(注:pvo可以看成通用的DAO,查询结果是List<Map>对象,其中Map代表一条记录,List代表查询结果集,Map的key代表字段名。具体参见本人的“HashMap关系数据映射技术(简称PVO技术) ”)

 


    /**
     * @param realPath 文件路径
     * 创建菜单数据文件,pvoDataMenu.js文件
     */
    public void __writerPvoDataMenu(String realPath) {
        List v = null;
        try {
            ProcessVO pvo = new ProcessVO(Db.instance().getCon());
            try {
                v = pvo.getSomeRecord("select sitemenu_id as id,parent_id,label,pagename,sortnum from sitemenu where user like 'abc' order by sortnum");
            } finally {
                pvo.closeCon();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        String path = realPath + File.separator + "resource" + File.separator + "js";
        File fp = new File(path);
        fp.mkdirs();
        String jsFile = path + File.separator + "pvoDataMenu.js";
        File file = new File(jsFile);
        String js = "";
        StringBuilder content = new StringBuilder();
        content.append("var menu_v=new Array();");
        content.append("var m=null;");
        for (int i = 0; i < v.size(); i++) {
            Map m = (Map) v.get(i);
            content.append("m=new Map();");
            content.append(jsMap(m));
            content.append("menu_v.push(m);");
        }
        js = content.toString();
        try {
            file.delete();
            file.createNewFile();
            BufferedWriter bout = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "GBK"));
            bout.write(js);
            bout.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

 


    /**
     * @param m 一条记录,key是字段名或字段别名

     */
    private String jsMap(Map m) {
        String s = "";
        Set set = m.keySet();
        Object[] keys = set.toArray();
        for (int i = 0; i < keys.length; i++) {
            Object key = keys[i];
            Object value = m.get(key);
            if (value != null) {
                if ("true".equals(value.toString()) || "false".equals(value.toString())) {
                    s = s + "m.put('" + key + "', " + value.toString() + ");";
                } else {
                    s = s + "m.put('" + key + "', '" + value.toString() + "');";
                }

            } else {
                s = s + "m.put('" + key + "', null);";
            }
        }
        return s;
    }

下一篇将介绍将Ajax动态查询结果转换成List<Map>型JavaScript数组
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值