一:数据库查询出结果
二:想要的结果为
同是乒乓球的话,则乒乓球和乒乓球2同在乒乓球下,即乒乓球下有两个实体
三:java代码
public void get() {
String sql = "SELECT a.id,a.info,s.id as sid,s.sport_name,c.type,c.num from gym_areas a LEFT JOIN sport_items s on a.sport_item_id=s.id”
+“ LEFT JOIN coupon c ON a.id=c.gym_area_id and c.type=6 WHERE a.gym_id=16";
List<Record> list = Db.find(sql);
Map<String, List<Record>> r1 = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
List<Record> r2 = new ArrayList<>();
Record spo = list.get(i);
Object str = r1.get(spo.getStr("sport_name"));
String name = spo.getStr("sport_name");
if (str == null) {
r2.add(0, list.get(i));
r1.put(name, r2);
} else {
List<Record> r = r1.get(name);
r.add(r.size(), list.get(i));
r2.addAll(r);
r1.put(name, r2);
}
}
renderJson(JsonKit.toJson(r1));
}
四:结果示例
{"游泳":[{"sport_name":"游泳","num":3000,"id":26,"type":6,"info":"游泳馆2","sid":3}],
"羽毛球":[{"sport_name":"羽毛球","num":null,"id":28,"type":null,"info":"羽毛球","sid":1}],
"篮球":[{"sport_name":"篮球","num":6000,"id":29,"type":6,"info":"篮球","sid":4}],
"网球":[{"sport_name":"网球","num":null,"id":31,"type":null,"info":"室外网球","sid":2}],
"乒乓球":[{"sport_name":"乒乓球","num":null,"id":30,"type":null,"info":"乒乓球","sid":5},{"sport_name":"乒乓球","num":null,"id":34,"type":null,"info":"乒乓球2","sid":5}]}