From 6a0adbd175c536111a67a2794fb8d1da7515a078 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Mon, 19 Dec 2022 11:31:21 +0800 Subject: [PATCH] query --- .../org/nl/common/domain/query/PageQuery.java | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java index 7926d1e..e268c0b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/query/PageQuery.java @@ -1,12 +1,14 @@ package org.nl.common.domain.query; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.Data; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; +import java.lang.reflect.Field; import java.util.Locale; @@ -57,12 +59,53 @@ public class PageQuery implements Serializable { Page page = new Page<>(pageNum, pageSize); if (StringUtils.isNotEmpty(sort)){ String[] split = sort.split(","); - String col = split[0]; - OrderItem item = new OrderItem(); - item.setColumn(split[0]); - item.setAsc(split[1].toLowerCase(Locale.ROOT).equals("asc")); - page.addOrder(item); + for (int i = 0; i < (split.length & ~1); i=i+2) { + String col = split[i]; + OrderItem item = new OrderItem(); + item.setColumn(col); + item.setAsc(split[i+1].toLowerCase(Locale.ROOT).equals("asc")); + page.addOrder(item); + } } return page; } + + public Page build(Class r) { + Integer pageNum = ObjectUtil.defaultIfNull(getPage(), DEFAULT_PAGE_NUM); + Integer pageSize = ObjectUtil.defaultIfNull(getSize(), DEFAULT_PAGE_SIZE); + if (pageNum <= 0) { + pageNum = DEFAULT_PAGE_NUM; + } + Page page = new Page<>(pageNum, pageSize); + if (StringUtils.isNotEmpty(sort)){ + String[] split = sort.split(","); + for (int i = 0; i < (split.length & ~1); i=i+2) { + String col = split[i]; + if ("id".equals(col)){ + String mId = mappingId(r); + col = StringUtils.isNotEmpty(mId)?mId:col; + } + OrderItem item = new OrderItem(); + item.setColumn(col); + item.setAsc(split[i+1].toLowerCase(Locale.ROOT).equals("asc")); + page.addOrder(item); + } + + } + return page; + } + + private String mappingId(R r){ + if (r instanceof Class){ + Field[] fields = ((Class) r).getDeclaredFields(); + for (Field field : fields) { + TableId[] byType = field.getAnnotationsByType(TableId.class); + if (byType !=null && byType.length>0){ + TableId tableId = byType[0]; + return tableId.value(); + } + } + } + return null; + } }