在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数组
这里以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数组
相关文章推荐
- 在JavaWEB中将Ajax动态查询结果转换成List<Map>型JavaScript数组
- 如何把从数据库中查询出的结果保存为List<Map>
- 在JavaScript中实现类似Java中List<Map>类型的数组
- List<Map>类型的JavaScript数组应用范例:图片多样化显示
- List<Map>类型的JavaScript数组应用范例:资讯列表多样化显示
- 数据库查询结果封装List<Map<String,String>>
- Java集合转换【List<-->数组、List<-->Set、数组<-->Set、Map-->Set、Map-->List】
- Android中将List<Map<String, Object>>类型数据与字符串的相互转化
- mybatis查询如何返回List<Map>类型数据
- java 之Sting类型的List集合的汉字排序和String类型数组的汉字排序及List<Bean>排序
- java 后台使用gson 将json字符串转换为List<Map<String,object>> 数组
- JAVA POI Excel导出,数据源可以是List<Map>或者List<Model>类型
- javaweb --- jsp页面遍历list<map>类型的数据
- 集合转换java:【List<-->数组、List<-->Set、数组<-->Set、Map-->Set、Map-->List】
- Java集合转换【List<-->数组、List<-->Set、数组<-->Set、Map-->Set、Map-->List】
- 将任意查询结果ResultSet转化成List<Map>
- 数据库查询返回List<Map<String, Object>>
- Java解析txt文件中json数据到List<entity>,并存入数据库
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值
- android 子线程通过bundle、handler.sendMessage(message)向主线程传输多个类型数据,包括list<Map<String,Object>>