如何将DBUtil中使用BeanListHandler中转返回的List存入一个JSONArray中
2014-04-28 22:04
686 查看
我们知道在使用EasyUI时,它只认JSON,所以封装JSON显得尤为重要。在操作数据库的时候,通常为了简化JDBC,我们通常会使用DBUtil,那么DBUtil中有个方法,例如:
这里的runner.query()方法返回的就是List,这是如果我们想把这个List中的数据封装到JSONArray中,分别需要:表中的属性名,和属性名对应的属性值。
为了让这个封装方法具有通用性,这里引入泛型与反射,构成静态方法,充作工具类使用。
如果只是使用简单的JDBC,返回的结果是ResultSet,那么ResultSet有相应的rs.getMetaData();方法,这其中就有getColumnName(column)方法获得属性名,获取属性名对应的属性值也很简单,只需要rs.getObject();即可。
这里如果返回的List,就需要采用我这里的方法了,也算个封装吧。用到了点泛型、反射。
List<Grade> list = (List<Grade>) runner.query(sql.toString(), new BeanListHandler(Grade.class), params);
这里的runner.query()方法返回的就是List,这是如果我们想把这个List中的数据封装到JSONArray中,分别需要:表中的属性名,和属性名对应的属性值。
为了让这个封装方法具有通用性,这里引入泛型与反射,构成静态方法,充作工具类使用。
/** * * @param list 外面传进来的list集合 * @param clazz 为了获取属性名,传进来一个class * @return 返回JSONArray */ public static <T> JSONArray formatRsToJsonArray(List<T> list,Class<T> clazz ) { try { //首先创建一个JSONArray对象 JSONArray jsonArray = new JSONArray(); //获取List迭代器 Iterator it = list.iterator(); while(it.hasNext()){ //新建一个JSONOBject //先将获取到的一条记录存入JSONObject中 JSONObject o = new JSONObject(); Field [] fs = clazz.getDeclaredFields();//获取传进来的class的所有属性 Object object = it.next(); //记录迭代器的下一个记录 for (int i = 0; i < fs.length; i++) { fs[i].setAccessible(true);//强暴遍历到的属性,以获取私有属性 Field f = object.getClass().getDeclaredField(fs[i].getName()); //根据强暴到的属性名再次获取属性 f.setAccessible(true); //强暴,获取私有属性 String name = fs[i].getName(); //得到属性名 Object value = f.get(object); //得到属性名对应的属性值 o.put(name, value); //将属性名和属性值分别作为Key、value存入JSONObject中 } jsonArray.add(o); //最后将JSONObject加入JSONArray中 } return jsonArray; //返回JSONArray } catch (Exception e) { throw new RuntimeException(e); } }
如果只是使用简单的JDBC,返回的结果是ResultSet,那么ResultSet有相应的rs.getMetaData();方法,这其中就有getColumnName(column)方法获得属性名,获取属性名对应的属性值也很简单,只需要rs.getObject();即可。
这里如果返回的List,就需要采用我这里的方法了,也算个封装吧。用到了点泛型、反射。
相关文章推荐
- 前台使用ajax 调用action方法,返回一个对象List集合的json
- 客户端使用Ajax访问struts2 , struts2如何返回一个json数据!json-lib与flexjson
- 当我们在外部使用``–list``参数调用这个脚本时,这个脚本必须返回一个JSON散列/字典
- 使用array和list实现在php中一个函数同时返回多个值
- javaweb如何返回一个无键JSON数组给前端,以JSF为例
- Visual C#2005——如何使用ToArray方法返回一个强类型数组
- 在Action中查询出SQL SERVER表的数据,返回一个list。怎么在JSP页面中使用Struts标签,显示出表中的内容?(转)
- Yii:如何在CGridView列表控件使用了Ajax方式更新数据的情况下返回前一个页面
- Arrays.asList(array)将返回一个List,然而这个返回的List并不支持add和remove的操作
- 使用Wisdom RESTClient进行自动化测试,如何取消对返回的body内容的校验?对排除的JSON属性字段不做校验?
- 如何将一个json字符串当成一个JSON对应来使用,在java中
- 如何让Spring MVC Controller的同一个方法,根据逻辑判断返回JSON或者HTML视图?
- 写student类中的select,delete,update,insert方法并在objectDataSource中应用(分别写两个,一个返回datatable,一个使用list)
- 如何让 Spring MVC Controller 的同一个 URL 请求,根据逻辑判断返回 JSON 或者 HTML 视图?
- 使用Wisdom RESTClient进行自动化测试,如何取消对返回的body内容的校验?对排除的JSON属性字段不做校验?
- [Unity&JSON]如何在同一个JSON文档中存入多个不同类型的数据
- 如何使用指针从函数返回一个数组。
- 如何将一个List<Map<String,String>>类型的集合数据转换成json格式输出
- Struts2如何返回一个JSON类型的字符串
- 如何通过Java代码将JsonArray转化为list集合