之前写过一个 手把手教你做一个自定义表格标签 ,这个标签需要后台设置一个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/ !?