德州加盟网站建设,无忧网站模板,怎么制作小程序,企业咨询流程前言
前端需要根据表头的点击控件可以排序#xff0c;虽然前端能根据当前页的数据进行对应字段的排序#xff0c;但也仅局限于实现当前页的排序#xff0c;无法满足全部数据的排序#xff0c;所以需要走接口的查询进行排序#xff0c;获取最全的排序数据
实现方案
前端…前言
前端需要根据表头的点击控件可以排序虽然前端能根据当前页的数据进行对应字段的排序但也仅局限于实现当前页的排序无法满足全部数据的排序所以需要走接口的查询进行排序获取最全的排序数据
实现方案
前端将排序的字段通过接口传入{column:dtCreateTime,order:ASC}后端使用 mybatis-plus 的TableInfoHelper获取到字段映射的数据库字段组装 order by 然后放置在LambdaQueryWrapper的.last(orderSql)方法中
关键代码摘录
目前就简单考虑传入一个字段进行排序多个可以使用逗号分隔等等具体情况具体实现。
/** * 根据查询条件拼接得到order by语句 * param req 分页查询条件 * return String */public String getOrderByStatement(PageReq req) { if (StringUtils.isNoneBlank(req.getColumn(), req.getOrder())) { TableInfo tableInfo TableInfoHelper.getTableInfo(EntityDemo.class); ListTableFieldInfo fieldList tableInfo.getFieldList(); OptionalString colum fieldList.stream() .filter(v - StringUtils.equals(v.getEl(), req.getColumn())) .findFirst() .map(TableFieldInfo::getColumn); if (colum.isPresent()) { return String.format( order by %s %s, colum.get(), req.getOrder()); } } return null;
}将上述的 order by 的 sql 放置在 LambdaQueryWrapper 生成的 sql 最后
String orderSql getOrderByStatement(req);
LambdaQueryWrapperEntityDemo queryWrapper Wrappers.lambdaQuery(EntityDemo.class) .查询条件 .last(StringUtils.isNotBlank(orderSql), orderSql);总结
或许上面的方案不是比较好的方案但是可以避免驼峰转换数据库库区分字段大小写和非表字段错误的情况。 上面并不是生产环境的代码只是为了说明情况简化的代码。但核心还是TableInfoHelper,最后祝各位玩的愉快。