须知:Record实体类存取的是2个玩家(User实体类)的id
@Autowired
private UserMapper userMapper;
@Autowired
private RecordMapper recordMapper;
@Override
public JSONObject GetRecord(int page) {
JSONObject resp = new JSONObject();
IPage<Record> recordPage = new Page<>();
QueryWrapper<Record> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("id");
List<Record> records = recordMapper.selectPage(recordPage, queryWrapper).getRecords();
List<JSONObject> resps = new ArrayList<>();
for (Record r : records) {
User userA = userMapper.selectById(r.getAId());
User userB = userMapper.selectById(r.getBId());
JSONObject item = new JSONObject();
item.put("a_photo",userA.getPhoto());
item.put("a_username",userA.getUsername());
item.put("b_photo",userB.getPhoto());
item.put("b_username",userB.getUsername());
item.put("record",r);
resps.add(item);
}
resp.put("records",resps);
return resp;
}
返回值为JSONObject是为了更好的封装2个表格的数据
首先就是对Record表格的联合查询
IPage<Record> recordPage = new Page<>(); QueryWrapper<Record> queryWrapper = new QueryWrapper<>(); queryWrapper.orderByDesc("id"); List<Record> records = recordMapper.selectPage(recordPage, queryWrapper).getRecords();
注意这里最后一定要返回 List<Record>类型,要.getRecords();
JSONObject resp = new JSONObject();
和
List<JSONObject> resps = new ArrayList<>();
resp是为了返回最后的结果,给前端比较好取到属性,resps是把2个表格的数据结合起来,
最后把resps交给resp统一返回给前端!
至于这一段:
for (Record r : records) {
User userA = userMapper.selectById(r.getAId());
User userB = userMapper.selectById(r.getBId());
JSONObject item = new JSONObject();
item.put("a_photo",userA.getPhoto());
item.put("a_username",userA.getUsername());
item.put("b_photo",userB.getPhoto());
item.put("b_username",userB.getUsername());
item.put("record",r);
resps.add(item);
}
遍历前面分页查询的结果将record里面的2为玩家id取出来查询User表!
得到对应的实体类后,再new一个JSONObject对象把来自User表的photo,username对象封装起来,再把record表记录也一起封装,最后由上面的resps打包起来。
再由最后的
resp.put("records",resps); return resp;