From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 03 四月 2025 14:35:02 +0800
Subject: [PATCH] 添加非密字段显示
---
Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/resolver/PageArgumentResolver.java | 75 +++++++++++++++++++++++++++++++++++++
1 files changed, 75 insertions(+), 0 deletions(-)
diff --git a/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/resolver/PageArgumentResolver.java b/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/resolver/PageArgumentResolver.java
new file mode 100644
index 0000000..0f173c6
--- /dev/null
+++ b/Source/BladeX-Tool/blade-starter-mybatis/src/main/java/org/springblade/core/mp/resolver/PageArgumentResolver.java
@@ -0,0 +1,75 @@
+package org.springblade.core.mp.resolver;
+
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.core.MethodParameter;
+import org.springframework.lang.NonNull;
+import org.springframework.web.bind.support.WebDataBinderFactory;
+import org.springframework.web.context.request.NativeWebRequest;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
+import org.springframework.web.method.support.ModelAndViewContainer;
+
+/**
+ * 瑙e喅 Mybatis Plus page SQL娉ㄥ叆闂
+ *
+ * @author L.cm
+ */
+public class PageArgumentResolver implements HandlerMethodArgumentResolver {
+ private static final String ORDER_ASC = "asc";
+
+ @Override
+ public boolean supportsParameter(MethodParameter parameter) {
+ return Page.class.equals(parameter.getParameterType());
+ }
+
+ /**
+ * page 鍙傛暟瑙f瀽
+ *
+ * @param parameter MethodParameter
+ * @param mavContainer ModelAndViewContainer
+ * @param request NativeWebRequest
+ * @param binderFactory WebDataBinderFactory
+ * @return 妫�鏌ュ悗鏂扮殑page瀵硅薄
+ */
+ @Override
+ public Object resolveArgument(@NonNull MethodParameter parameter, ModelAndViewContainer mavContainer,
+ NativeWebRequest request, WebDataBinderFactory binderFactory) {
+ // 鍒嗛〉鍙傛暟 page: 0, size: 10, sort=id%2Cdesc
+ String pageParam = request.getParameter("page");
+ String sizeParam = request.getParameter("size");
+ String[] sortParam = request.getParameterValues("sort");
+ Page<?> page = new Page<>();
+ if (StringUtil.isNotBlank(pageParam)) {
+ page.setCurrent(Long.parseLong(pageParam));
+ }
+ if (StringUtil.isNotBlank(sizeParam)) {
+ page.setSize(Long.parseLong(sizeParam));
+ }
+ if (ObjectUtil.isEmpty(sortParam)) {
+ return page;
+ }
+ for (String param : sortParam) {
+ if (StringUtil.isBlank(param)) {
+ continue;
+ }
+ String[] split = param.split(StringPool.COMMA);
+ // 娓呯悊瀛楃涓�
+ OrderItem orderItem = new OrderItem();
+ orderItem.setColumn(StringUtil.cleanIdentifier(split[0]));
+ orderItem.setAsc(isOrderAsc(split));
+ page.addOrder(orderItem);
+ }
+ return page;
+ }
+
+ private static boolean isOrderAsc(String[] split) {
+ // 榛樿 desc
+ if (split.length < 2) {
+ return false;
+ }
+ return ORDER_ASC.equalsIgnoreCase(split[1]);
+ }
+}
--
Gitblit v1.10.0