您的位置:首页 > Web前端 > JavaScript

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

2011-11-17 08:51 881 查看
将一些基本的、频繁使用的数据保存为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数组
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐