根据 mybatis 根据多字段排序已经wrapper 根据多字段排序
首先根据咱们返回前端的数据列来规划好排序字段
如下:
这里的字段为返回VO的字段,要转换成数据库字段然后加入到排序中
示例,穿了 surname,cerRank 多字段,然后是倒序 false
首先创建好映射,如下代码,第一个List 为前端字段VO, 第二个List 为数据库字段。Util.handle 是将两个转换为map,然后就可以做映射啦。下面也写啦handle的方法。
Map<String,String> SORTCOLUMNMAP =
Util.handle(Arrays.asList("surname","idcardNum","cerCode","cerType","cerRank","permissionTime","expirationTime"),
Arrays.asList("surname","idcard_num","cer_code","cer_type","cer_rank","permission_time","expiration_time"));
/**
* 将两个list转换为Map
* @author ZMH
* @return Map<String, String>
*/
public static Map<String, String> handle(List<String> list1, List<String> list2) {
Map<String, String> map = IntStream.range(0, list1.size())
.collect(HashMap::new, (m, i) -> m.put(list1.get(i), list2.get(i)), (m, n) -> {
});
return map;
}
到这里之后我们就做一个转换的方法吧,然后这里测试如下,结果为surname,cer_rank 成功的改为了数据库字段,然后就可以加入到wrapper和sql 中啦。
/**
* 获取转换后的排序字
* @author ZMH
* @date 31/7/2023 2:13 下午
*/
public static String getColumns (Map<String, String> sortColumnMap,String orderByColumns){
List<String> orderByColumnList = Arrays.asList(orderByColumns.split(","));
AtomicInteger i = new AtomicInteger();
AtomicReference<String> columns = new AtomicReference<>("");
orderByColumnList.forEach(
column -> {
columns.set(columns.get()+sortColumnMap.get(column));
if (i.getAndIncrement() != (orderByColumnList.size()-1)) {
columns.set(columns.get()+",");
}
});
return columns.get();
}
文章来源:https://www.toymoban.com/news/detail-621555.html
sql的话大家应该都知道怎么写,就不写sql的啦。写一个wrapper 的列子,如下:文章来源地址https://www.toymoban.com/news/detail-621555.html
queryCondition(queryWrapper,dto);//查询条件封装的方法都是一些判断
if (StringUtils.isNotBlank(dto.getOrderByColumns())){
String order = dto.getOrderByAsc() ? "asc" : "desc";//正序倒序
String columns = Util.getColumns(baseMapper.SORTCOLUMNMAP, dto.getOrderByColumns());//获取数据库字段
queryWrapper.last(" order by ".concat(columns).concat(" ").concat(order));//最后拼接到wrapper 里面就可以来啦.
}else {
queryWrapper.orderByDesc(GzhExamCertificate::getCerCode);
}
到了这里,关于Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!