Servlet项目笔记之常用的resp处理方法

现有数据库如下:

需求:给定用户uid即可查询该用户所拥有的所有school和每一个school下所有的building
现有School类如下:

现有Building类如下:

直接根据数据库的字段构建相应的并不能满足查询的需求,我们希望School类中直接有一个List类型的字段用来存放building对象,这样查询就只需迭代遍历就可以了。
为此我们新建一个类


注意forJson包下的类是用来兼容协议的,所以里面的字段需要根据协议来定
我们这次测试直接在单元测试里演示
我们先用List去存放该用户的所有School对象

int uid = 14; //用户的id
SchoolDao schoolDao = new SchoolDao(); //学校的Dao类
List<School> list_s = schoolDao.query(uid);//声明一个数组存放school对象,用于存放Dao类的查询结果
System.out.println(list_s);


接下来去遍历List,代码如下:

for (School school : list_s) {
        project project = new project();
        project.setProject_id(school.getSid());
        project.setProject_name(school.getName());
        System.out.println(project);
    }


我们接下来只要再以每一个学校的id(即project_id)为索引信息去遍历每一间学校下面的所有Building丙炔存放到area_info字段就可以了

代码如下:

BuildingDao buildingDao = new BuildingDao();
List<Building> list_b = buildingDao.query(uid, school.getSid());
List b_list = new ArrayList();
for (Building building : list_b) {
        b_list.add(building);
    }
project.setArea_info(b_list);
System.out.println(project);


可以看到现在project对象已经填充完毕了
但是问题来了,我们用什么去存放project对象呢?我们在一开始再声明一个List容器,用来存放project对象



最后以JSON输出即可


可能会出现的问题

  1. JSON字符串顺序不对
    这是fastjson库内部决定的,我们只需要传参给构造函数即可解决,具体原因自行百度
  2. null值不显示
    这也是fastjson库内部决定的,我们只需要做一步转换即可
 object.put("project", s_list);
String str = JSONObject.toJSONString(object, SerializerFeature.WriteMapNullValue);
System.out.println(str);

完整代码

    @Test
    public void testQuery() {
        int uid = 14; //用户的id
        JSONObject object = new JSONObject(true); //新建一个fastjson的实体类
        SchoolDao schoolDao = new SchoolDao();
        List s_list = new ArrayList();//声明一个数组存放project对象
        List<School> list_s = schoolDao.query(uid);//声明一个数组存放school对象
        for (School school : list_s) {
            project project = new project();
            project.setProject_id(school.getSid());
            project.setProject_name(school.getName());

            BuildingDao buildingDao = new BuildingDao();
            List<Building> list_b = buildingDao.query(uid, school.getSid());
            List b_list = new ArrayList();
            for (Building building : list_b) {
                b_list.add(building);
            }
            project.setArea_info(b_list);
            s_list.add(project);
        }
        object.put("project", s_list);
        String str = JSONObject.toJSONString(object, SerializerFeature.WriteMapNullValue);
        System.out.println(str);
    }
发布了109 篇原创文章 · 获赞 2 · 访问量 1226

猜你喜欢

转载自blog.csdn.net/qq_42528769/article/details/104426065