前言
最近在学习中遇到了一个问题,数据库数据过多,一次性将所有数据展示给用户可能会导致信息过载,需要分页来减少数据传输量,同时还要联接多张表,在xml文件中用resultMap来映射属性这种方法不好分页,容易出错。
解决方法
将联表需要的数据组转化成字符串
concat('[', group_concat(distinct json_object('id', rs.id, 'name', rs.name, 'projectId', xrp.id)), ']') as supplierListJsonStr
在需要映射的类中设置相应属性
@JsonIgnore
@ApiModelProperty(value = "供应商列表Json字串", hidden = true)
private String supplierListJsonStr;
获取数据后在service层解析,解析得有关数组,然后通过set来设置相关属性值
String supplierListJsonStr = result.getSupplierListJsonStr();
List<ResourcePurchaser.Supplier> resourceSupplierList = new ArrayList<>();
try {
if (JSON.isValid(projectListJsonStr)) {
resourceProjectList = JSON.parseObject(projectListJsonStr, new TypeReference<List<ResourcePurchaser.Project>>() {});
}
} catch (Exception e) {
e.printStackTrace();
}
这样可以直接来用limit进行分页,不用考虑联表时产生的包含不同子数据的数据。