欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自定义表格标签 JDBC查询时的显示转换

程序员文章站 2022-04-10 20:16:24
...

之前写过一个 手把手教你做一个自定义表格标签 ,这个标签需要后台设置一个JSON数据,然后就能根据自己的定义进行表格化的数据显示

相关地址:http://cuisuqiang.iteye.com/blog/1582942

 

一般,我们通过相关查询得到一个List,在后台通过转换工具将List内容转换为JSON

JSONArray.fromObject(list);

 

如果我们是通过JDBC查询到的,那么返回的往往就是一个包含了Map的List,数据仅仅是查询到的数字化信息,而没有进行相关友好转换

例如,一些数据字典的内容(JSP自定义标签实现数据字典:http://cuisuqiang.iteye.com/blog/1381591),存到数据库的都是数字,那么显示时肯定要进行转换的

如果是详细页面,我们可以通过自定义字典标签来实现,如果是列表页面,我们可以通过SQL查询时直接进行转换

 

但是当数据库数据量过大时,我们为了一个数据显示还把这些转换工作交给数据库,就显得程序处理能力太差了

数据库就是存储数据的,我只把数据给你,其他的不管,这样的做法可以大量提升查询速度和性能,至于增加了服务器的压力,几行数据的转换压力是可以忽略的

 

刚才也说了,JDBC查询返回的是一个包含了Map的List,Map的Value是可以存储任意值的,循环这个List根据自己的需要进行转换即可

例如,数据库的空字段我都设置了 DEFAULT NULL ,我想把NULL的字段都显示为 / 

@SuppressWarnings("unchecked")
public List getRelList(List<Map> list){
	List listRel = new ArrayList();
	Iterator it = list.iterator();
	while(it.hasNext()) {
		Map map = (Map) it.next();
		Set<String> keySet = map.keySet();
		for(String key : keySet){
			String val = map.get(key) + "";
			if("".equals(val) || "null".equals(val)){
				map.put(key, "/");
			}
		}
		listRel.add(map);
	}
	return listRel;
}

 

做法很简单,只是把Map里面的值改变,重新组装了一个List而已

查询到数据后,设置JSON数据时进行下转换

JdbcTemplate jt = (JdbcTemplate) SpringFactory.getObject("jdbcTemplate");
List list = list = jt.queryForList(sql);
JSONArray jsonArr = null;
if (null != list && list.size() > 0) {
	jsonArr = JSONArray.fromObject(getRelList(list));
	request.setAttribute("currentJsonDate", jsonArr.toString());
}

 

上面的代码,还可以根据数据字典方式进行数据字典内容的转换

 

请您到ITEYE网站看原创,谢谢!

http://cuisuqiang.iteye.com/ ! 

自建博客地址:http://www.javacui.com/ ,内容与ITEYE同步!