diff --git a/pom.xml b/pom.xml index 6da224a2..8c42cd10 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ com.codingapi.springboot springboot-parent - 3.1.8 + 3.1.9 https://github.com/codingapi/springboot-framewrok springboot-parent diff --git a/springboot-starter-data-fast/pom.xml b/springboot-starter-data-fast/pom.xml index 47e1f703..17764984 100644 --- a/springboot-starter-data-fast/pom.xml +++ b/springboot-starter-data-fast/pom.xml @@ -5,7 +5,7 @@ springboot-parent com.codingapi.springboot - 3.1.8 + 3.1.9 4.0.0 diff --git a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/JPAQuery.java b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/JPAQuery.java index 9e0ff15e..1170171b 100644 --- a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/JPAQuery.java +++ b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/JPAQuery.java @@ -24,6 +24,11 @@ public List listQuery(Class clazz, String sql, Object... params) { return query.getResultList(); } + + public Page pageQuery(Class clazz, String sql, PageRequest pageRequest, Object... params) { + return pageQuery(clazz,sql,"select count(1) " + sql,pageRequest,params); + } + public Page pageQuery(Class clazz, String sql, String countSql, PageRequest pageRequest, Object... params) { TypedQuery query = entityManager.createQuery(sql, clazz); if (params != null) { diff --git a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicRepository.java b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicRepository.java index 186f45a1..924d2e0d 100644 --- a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicRepository.java +++ b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicRepository.java @@ -31,7 +31,7 @@ default Page dynamicPageQuery(String sql, String countSql, PageRequest reques } default Page dynamicPageQuery(String sql, PageRequest request, Object... params) { - return (Page) JpaQueryContext.getInstance().getJPAQuery().pageQuery(getEntityClass(), sql, "select count(1) " + sql, request, params); + return (Page) JpaQueryContext.getInstance().getJPAQuery().pageQuery(getEntityClass(), sql, request, params); } default Page dynamicPageQuery(Class clazz, String sql, String countSql, PageRequest request, Object... params) { diff --git a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicRequest.java b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicSQLBuilder.java similarity index 94% rename from springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicRequest.java rename to springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicSQLBuilder.java index ef91f3c6..06705ad8 100644 --- a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicRequest.java +++ b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/DynamicSQLBuilder.java @@ -3,13 +3,18 @@ import com.codingapi.springboot.framework.dto.request.Filter; import com.codingapi.springboot.framework.dto.request.PageRequest; import com.codingapi.springboot.framework.dto.request.RequestFilter; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Sort; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -public class DynamicRequest { +/** + * 动态条件查询组装 + */ +@Slf4j +class DynamicSQLBuilder { private final PageRequest request; private final Class clazz; @@ -17,13 +22,13 @@ public class DynamicRequest { private final List params = new ArrayList<>(); private int paramIndex = 1; - public DynamicRequest(PageRequest request, Class clazz) { + public DynamicSQLBuilder(PageRequest request, Class clazz) { this.request = request; this.clazz = clazz; } - public String getHql() { + public String getHQL() { StringBuilder hql = new StringBuilder("FROM " + clazz.getSimpleName() + " WHERE "); RequestFilter requestFilter = request.getRequestFilter(); if (requestFilter.hasFilter()) { @@ -50,6 +55,8 @@ public String getHql() { } } + log.debug("hql:{}", hql); + log.debug("params:{}", params); return hql.toString(); } diff --git a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/ExampleRequest.java b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/ExampleBuilder.java similarity index 92% rename from springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/ExampleRequest.java rename to springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/ExampleBuilder.java index 25ee2ed2..6b72dec3 100644 --- a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/ExampleRequest.java +++ b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/ExampleBuilder.java @@ -8,12 +8,15 @@ import java.beans.PropertyDescriptor; -public class ExampleRequest { +/** + * Example组装 + */ +class ExampleBuilder { private final PageRequest request; private final Class clazz; - public ExampleRequest(PageRequest request, Class clazz) { + public ExampleBuilder(PageRequest request, Class clazz) { this.request = request; this.clazz = clazz; } diff --git a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/FastRepository.java b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/FastRepository.java index 4b55b787..d3e2deb8 100644 --- a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/FastRepository.java +++ b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/FastRepository.java @@ -1,20 +1,26 @@ package com.codingapi.springboot.fast.jpa.repository; import com.codingapi.springboot.framework.dto.request.PageRequest; +import com.codingapi.springboot.framework.dto.request.SearchRequest; import org.springframework.core.ResolvableType; import org.springframework.data.domain.Page; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.repository.NoRepositoryBean; +/** + * 更强大的Repository对象 + * @param + * @param + */ @NoRepositoryBean public interface FastRepository extends JpaRepository, JpaSpecificationExecutor, DynamicRepository { default Page findAll(PageRequest request) { if (request.hasFilter()) { Class clazz = getDomainClass(); - ExampleRequest exampleRequest = new ExampleRequest(request, clazz); - return findAll(exampleRequest.getExample(), request); + ExampleBuilder exampleBuilder = new ExampleBuilder(request, clazz); + return findAll(exampleBuilder.getExample(), request); } return findAll((org.springframework.data.domain.PageRequest) request); } @@ -30,10 +36,16 @@ default Class getDomainClass() { default Page pageRequest(PageRequest request) { if (request.hasFilter()) { Class clazz = getDomainClass(); - DynamicRequest dynamicRequest = new DynamicRequest(request,clazz); - return dynamicPageQuery(dynamicRequest.getHql(), request, dynamicRequest.getParams()); + DynamicSQLBuilder dynamicSQLBuilder = new DynamicSQLBuilder(request, clazz); + return dynamicPageQuery(dynamicSQLBuilder.getHQL(), request, dynamicSQLBuilder.getParams()); } return findAll((org.springframework.data.domain.PageRequest) request); } + + default Page searchRequest(SearchRequest request) { + Class clazz = getDomainClass(); + return pageRequest(request.toPageRequest(clazz)); + } + } diff --git a/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/SortRepository.java b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/SortRepository.java new file mode 100644 index 00000000..a47a0650 --- /dev/null +++ b/springboot-starter-data-fast/src/main/java/com/codingapi/springboot/fast/jpa/repository/SortRepository.java @@ -0,0 +1,39 @@ +package com.codingapi.springboot.fast.jpa.repository; + +import com.codingapi.springboot.framework.domain.ISort; +import com.codingapi.springboot.framework.dto.request.SortRequest; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.NoRepositoryBean; + +import java.util.ArrayList; +import java.util.List; + +@NoRepositoryBean +public interface SortRepository extends JpaRepository { + + + default void reSort(SortRequest request) { + if (request != null && !request.getIds().isEmpty()) { + List list = new ArrayList<>(); + int minSort = Integer.MAX_VALUE; + for (Object objectId : request.getIds()) { + ID id = (ID) objectId; + T t = getReferenceById(id); + if (t.getSort() == null) { + minSort = 0; + } else { + if (t.getSort() < minSort) { + minSort = t.getSort(); + } + } + list.add(t); + } + for (T t : list) { + t.setSort(minSort++); + } + saveAll(list); + } + } + + +} diff --git a/springboot-starter-data-fast/src/test/java/com/codingapi/springboot/fast/DemoRepositoryTest.java b/springboot-starter-data-fast/src/test/java/com/codingapi/springboot/fast/DemoRepositoryTest.java index 6f973873..64e20989 100644 --- a/springboot-starter-data-fast/src/test/java/com/codingapi/springboot/fast/DemoRepositoryTest.java +++ b/springboot-starter-data-fast/src/test/java/com/codingapi/springboot/fast/DemoRepositoryTest.java @@ -70,7 +70,7 @@ void pageRequest() { PageRequest request = new PageRequest(); request.setCurrent(1); request.setPageSize(10); - request.andFilter("name", Relation.LIKE, "%2%"); + request.addFilter("name", Relation.LIKE, "%2%"); Page page = demoRepository.pageRequest(request); assertEquals(1, page.getTotalElements()); @@ -92,7 +92,7 @@ void customInSearch() { request.setCurrent(1); request.setPageSize(10); - request.andFilter("id", Relation.IN, 1, 2, 3); + request.addFilter("id", Relation.IN, 1, 2, 3); Page page = demoRepository.pageRequest(request); log.info("demo:{}", page.getContent()); @@ -112,7 +112,7 @@ void customOrSearch() { demoRepository.save(demo2); PageRequest request = new PageRequest(); - request.setCurrent(1); + request.setCurrent(0); request.setPageSize(10); @@ -172,7 +172,7 @@ void sortQuery() { demoRepository.save(demo2); PageRequest request = new PageRequest(); - request.setCurrent(1); + request.setCurrent(0); request.setPageSize(10); request.addSort(Sort.by("id").descending()); diff --git a/springboot-starter-security-jwt/pom.xml b/springboot-starter-security-jwt/pom.xml index 54bcf40a..847a8db9 100644 --- a/springboot-starter-security-jwt/pom.xml +++ b/springboot-starter-security-jwt/pom.xml @@ -6,7 +6,7 @@ springboot-parent com.codingapi.springboot - 3.1.8 + 3.1.9 springboot-starter-security-jwt diff --git a/springboot-starter/pom.xml b/springboot-starter/pom.xml index 2af62d1f..43dfc218 100644 --- a/springboot-starter/pom.xml +++ b/springboot-starter/pom.xml @@ -5,7 +5,7 @@ com.codingapi.springboot springboot-parent - 3.1.8 + 3.1.9 springboot-starter diff --git a/springboot-starter/src/main/java/com/codingapi/springboot/framework/domain/ISort.java b/springboot-starter/src/main/java/com/codingapi/springboot/framework/domain/ISort.java new file mode 100644 index 00000000..f9efc10a --- /dev/null +++ b/springboot-starter/src/main/java/com/codingapi/springboot/framework/domain/ISort.java @@ -0,0 +1,8 @@ +package com.codingapi.springboot.framework.domain; + +public interface ISort { + + void setSort(Integer sort); + + Integer getSort(); +} diff --git a/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/Filter.java b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/Filter.java index db6c5477..55c901b8 100644 --- a/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/Filter.java +++ b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/Filter.java @@ -25,7 +25,7 @@ public Filter(String key, Object... value) { } public Filter(String key, Filter... value) { - this(key, null, value); + this(key, null, value); } public static Filter as(String key, Relation relation, Object... value) { diff --git a/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/PageRequest.java b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/PageRequest.java index 9f4a7af9..ff5b3df5 100644 --- a/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/PageRequest.java +++ b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/PageRequest.java @@ -1,25 +1,25 @@ package com.codingapi.springboot.framework.dto.request; -import jakarta.servlet.http.HttpServletRequest; import lombok.Getter; +import lombok.Setter; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; import java.util.Optional; public class PageRequest extends org.springframework.data.domain.PageRequest { @Getter + @Setter private int current; + + @Setter + @Getter private int pageSize; @Getter private final RequestFilter requestFilter = new RequestFilter(); - @Getter - private HttpServletRequest servletRequest; private org.springframework.data.domain.PageRequest pageRequest; @@ -28,13 +28,6 @@ public PageRequest(int current, int pageSize, Sort sort) { this.current = current; this.pageSize = pageSize; this.pageRequest = org.springframework.data.domain.PageRequest.of(current, pageSize, sort); - - try { - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); - this.servletRequest = attributes.getRequest(); - requestFilter.syncParameter(servletRequest); - } catch (Exception e) { - } } @@ -42,29 +35,6 @@ public PageRequest() { this(0, 20, Sort.unsorted()); } - public void setCurrent(int current) { - this.current = current > 0 ? current - 1 : 0; - this.requestFilter.deleteFilter("current"); - } - - public String getParameter(String key) { - return servletRequest.getParameter(key); - } - - public String getParameter(String key, String defaultValue) { - String result = servletRequest.getParameter(key); - return result == null ? defaultValue : result; - } - - public int getIntParameter(String key) { - return Integer.parseInt(servletRequest.getParameter(key)); - } - - public int getIntParameter(String key, int defaultValue) { - String result = servletRequest.getParameter(key); - return result == null ? defaultValue : Integer.parseInt(result); - } - public String getStringFilter(String key) { return requestFilter.getStringFilter(key); } @@ -85,15 +55,6 @@ public boolean hasFilter() { return requestFilter.hasFilter(); } - @Override - public int getPageSize() { - return pageSize; - } - - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - this.requestFilter.deleteFilter("pageSize"); - } @Override public Sort getSort() { @@ -164,7 +125,11 @@ public void addSort(Sort sort) { } } - public PageRequest andFilter(String key, Relation relation, Object... value) { + public void removeFilter(String key) { + requestFilter.removeFilter(key); + } + + public PageRequest addFilter(String key, Relation relation, Object... value) { requestFilter.addFilter(key, relation, value); return this; } @@ -174,8 +139,8 @@ public PageRequest addFilter(String key, Object... value) { return this; } - public PageRequest andFilter(Filter... value) { - requestFilter.andFilters(value); + public PageRequest andFilter(Filter... filters) { + requestFilter.andFilters(filters); return this; } diff --git a/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/RequestFilter.java b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/RequestFilter.java index fe2f087f..0773eac8 100644 --- a/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/RequestFilter.java +++ b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/RequestFilter.java @@ -1,9 +1,11 @@ package com.codingapi.springboot.framework.dto.request; -import jakarta.servlet.http.HttpServletRequest; import org.springframework.util.StringUtils; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class RequestFilter { @@ -40,17 +42,6 @@ public void pushFilter(Filter filter) { filterMap.put(filter.getKey(), filter); } - public void syncParameter(HttpServletRequest servletRequest) { - Enumeration enumeration = servletRequest.getParameterNames(); - while (enumeration.hasMoreElements()) { - String key = enumeration.nextElement(); - String value = servletRequest.getParameter(key); - if (StringUtils.hasText(value)) { - addFilter(key, value); - } - } - } - public String getStringFilter(String key) { Filter filter = filterMap.get(key); @@ -98,8 +89,8 @@ public Filter getFilter(String name) { return this.filterMap.get(name); } - public void deleteFilter(String current) { - this.filterMap.remove(current); - this.filterList.removeIf(item -> item.getKey().equals(current)); + public void removeFilter(String key) { + this.filterMap.remove(key); + this.filterList.removeIf(item -> item.getKey().equals(key)); } } diff --git a/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/SearchRequest.java b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/SearchRequest.java new file mode 100644 index 00000000..9eabb215 --- /dev/null +++ b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/SearchRequest.java @@ -0,0 +1,174 @@ +package com.codingapi.springboot.framework.dto.request; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.data.domain.Sort; +import org.springframework.util.StringUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +/** + * HttpServletRequest 请求参数解析成 PageRequest对象 + */ +public class SearchRequest { + + private int current; + private int pageSize; + + private final HttpServletRequest request; + + private final List removeKeys = new ArrayList<>(); + + private final PageRequest pageRequest; + + public SearchRequest() { + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); + this.request = attributes.getRequest(); + this.pageRequest = new PageRequest(); + } + + public void setCurrent(int current) { + this.current = current - 1; + this.removeKeys.add("current"); + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + this.removeKeys.add("pageSize"); + } + + public void addSort(Sort sort) { + pageRequest.addSort(sort); + } + + public void removeFilter(String key) { + pageRequest.removeFilter(key); + } + + public PageRequest addFilter(String key, Relation relation, Object... value) { + return pageRequest.addFilter(key, relation, value); + } + + public PageRequest addFilter(String key, Object... value) { + return pageRequest.addFilter(key, value); + } + + public PageRequest andFilter(Filter... filters) { + return pageRequest.andFilter(filters); + } + + public PageRequest orFilters(Filter... filters) { + return pageRequest.orFilters(filters); + } + + + + private String decode(String value) { + return new String(Base64.getDecoder().decode(value)); + } + + + static class ClassContent { + + private final Class clazz; + private final PageRequest pageRequest; + + public ClassContent(Class clazz, PageRequest pageRequest) { + this.clazz = clazz; + this.pageRequest = pageRequest; + } + + public void addFilter(String key, String value) { + Class keyClass = getKeyType(key); + Object v = JSON.parseObject(value, keyClass); + pageRequest.addFilter(key, Relation.EQUAL, v); + } + + public void addFilter(String key, List value) { + Class keyClass = getKeyType(key); + pageRequest.addFilter(key, Relation.IN, value.stream() + .map(v -> JSON.parseObject(v, keyClass)) + .toArray() + ); + } + + + private Class getKeyType(String key) { + String[] keys = key.split("\\."); + Class keyClass = clazz; + for (String k : keys) { + Field[] fields = keyClass.getDeclaredFields(); + for (Field field : fields) { + if (field.getName().equals(k)) { + keyClass = field.getType(); + break; + } + } + } + return keyClass; + } + + } + + public PageRequest toPageRequest(Class clazz) { + pageRequest.setCurrent(current); + pageRequest.setPageSize(pageSize); + + ClassContent content = new ClassContent(clazz, pageRequest); + + String sort = request.getParameter("sort"); + if (StringUtils.hasLength(sort)) { + sort = decode(sort); + if (JSON.isValid(sort)) { + removeKeys.add("sort"); + JSONObject jsonObject = JSON.parseObject(sort); + for (String key : jsonObject.keySet()) { + String value = jsonObject.getString(key); + if ("ascend".equals(value)) { + pageRequest.addSort(Sort.by(key).ascending()); + } else { + pageRequest.addSort(Sort.by(key).descending()); + } + } + } + } + + + String filter = request.getParameter("filter"); + if (StringUtils.hasLength(filter)) { + filter = decode(filter); + if (JSON.isValid(filter)) { + removeKeys.add("filter"); + JSONObject jsonObject = JSON.parseObject(filter); + for (String key : jsonObject.keySet()) { + JSONArray value = jsonObject.getJSONArray(key); + if (value != null && !value.isEmpty()) { + List values = value.stream().map(Object::toString).toList(); + content.addFilter(key, values); + } + } + } + } + + + request.getParameterNames().asIterator().forEachRemaining(key -> { + if (!removeKeys.contains(key)) { + String value = request.getParameter(key); + if (StringUtils.hasLength(value)) { + content.addFilter(key, value); + } + } + }); + + return pageRequest; + } + + +} diff --git a/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/SortRequest.java b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/SortRequest.java new file mode 100644 index 00000000..25d5a9b9 --- /dev/null +++ b/springboot-starter/src/main/java/com/codingapi/springboot/framework/dto/request/SortRequest.java @@ -0,0 +1,14 @@ +package com.codingapi.springboot.framework.dto.request; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Setter +@Getter +public class SortRequest { + + private List ids; + +} diff --git a/springboot-starter/src/test/java/com/codingapi/springboot/framework/dto/request/PageRequestTest.java b/springboot-starter/src/test/java/com/codingapi/springboot/framework/dto/request/PageRequestTest.java index e3584bfa..93028dd8 100644 --- a/springboot-starter/src/test/java/com/codingapi/springboot/framework/dto/request/PageRequestTest.java +++ b/springboot-starter/src/test/java/com/codingapi/springboot/framework/dto/request/PageRequestTest.java @@ -9,7 +9,7 @@ class PageRequestTest { @Test void test(){ PageRequest pageRequest = new PageRequest(); - pageRequest.setCurrent(2); + pageRequest.setCurrent(1); pageRequest.setPageSize(10); assertEquals(pageRequest.getCurrent(),1); diff --git a/springboot-starter/src/test/java/com/codingapi/springboot/framework/query/test/DemoRepositoryTest.java b/springboot-starter/src/test/java/com/codingapi/springboot/framework/query/test/DemoRepositoryTest.java index 6a1c31bd..e1dff7ec 100644 --- a/springboot-starter/src/test/java/com/codingapi/springboot/framework/query/test/DemoRepositoryTest.java +++ b/springboot-starter/src/test/java/com/codingapi/springboot/framework/query/test/DemoRepositoryTest.java @@ -43,7 +43,7 @@ void query(){ demoRepository.save(demo2); PageRequest request = new PageRequest(); - request.setCurrent(1); + request.setCurrent(0); request.setPageSize(10); @@ -67,7 +67,7 @@ void sort(){ demoRepository.save(demo2); PageRequest request = new PageRequest(); - request.setCurrent(1); + request.setCurrent(0); request.setPageSize(10); request.addSort(Sort.by("id").descending());