根據(jù) mybatis 根據(jù)多字段排序已經(jīng)wrapper 根據(jù)多字段排序
首先根據(jù)咱們返回前端的數(shù)據(jù)列來規(guī)劃好排序字段
如下:
這里的字段為返回VO的字段,要轉換成數(shù)據(jù)庫字段然后加入到排序中
示例,穿了 surname,cerRank 多字段,然后是倒序 false
首先創(chuàng)建好映射,如下代碼,第一個List 為前端字段VO, 第二個List 為數(shù)據(jù)庫字段。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 成功的改為了數(shù)據(jù)庫字段,然后就可以加入到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();
}
文章來源:http://www.zghlxwxcb.cn/news/detail-621555.html
sql的話大家應該都知道怎么寫,就不寫sql的啦。寫一個wrapper 的列子,如下:文章來源地址http://www.zghlxwxcb.cn/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());//獲取數(shù)據(jù)庫字段
queryWrapper.last(" order by ".concat(columns).concat(" ").concat(order));//最后拼接到wrapper 里面就可以來啦.
}else {
queryWrapper.orderByDesc(GzhExamCertificate::getCerCode);
}
到了這里,關于Mybatis ,Mybatis-plus列表多字段排序,包含sql以及warpper的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!