Skip to content

Commit 4afd099

Browse files
committedFeb 19, 2025
test: 分页 searchCount 反排
1 parent 61d248f commit 4afd099

File tree

4 files changed

+158
-1
lines changed

4 files changed

+158
-1
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.easy.query.core.basic.extension.navigate;
2+
3+
/**
4+
* create time 2025/2/19 08:29
5+
* 可取消的额外过滤
6+
*
7+
* @author xuejiaming
8+
*/
9+
public interface NavigateExtraFilterCancelable {
10+
/**
11+
* 名称
12+
* @return
13+
*/
14+
String name();
15+
}

‎sql-test/src/main/java/com/easy/query/test/QueryTest21.java

+88
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
package com.easy.query.test;
22

33
import com.easy.query.api.proxy.base.MapProxy;
4+
import com.easy.query.core.api.pagination.EasyPageResult;
45
import com.easy.query.core.basic.extension.listener.JdbcExecuteAfterArg;
56
import com.easy.query.core.metadata.EntityMetadata;
67
import com.easy.query.core.util.EasySQLUtil;
8+
import com.easy.query.test.common.PageResult;
9+
import com.easy.query.test.dto.autodto.SchoolClassAOProp14;
710
import com.easy.query.test.entity.BlogEntity;
811
import com.easy.query.test.entity.Topic;
912
import com.easy.query.test.entity.proxy.TopicProxy;
13+
import com.easy.query.test.entity.school.SchoolClass;
1014
import com.easy.query.test.listener.ListenerContext;
15+
import com.easy.query.test.page.mp.SearchCountPager;
1116
import org.junit.Assert;
1217
import org.junit.Test;
1318

@@ -94,4 +99,87 @@ public void caseWhenTest2() {
9499
Assert.assertEquals("123(String),1(String),2(String),123(String),1(Integer),456(String),1(Integer),3(Integer),4(Integer),someTitle(String)", EasySQLUtil.sqlParameterToString(jdbcExecuteAfterArg.getBeforeArg().getSqlParameters().get(0)));
95100

96101
}
102+
103+
@Test
104+
public void searchCountPageTest(){
105+
System.out.println("查询count");
106+
107+
{
108+
109+
110+
ListenerContext listenerContext = new ListenerContext(true);
111+
listenerContextManager.startListen(listenerContext);
112+
113+
PageResult<Topic> pageResult1 = easyEntityQuery.queryable(Topic.class)
114+
.where(t_topic -> {
115+
t_topic.title().like("123");
116+
}).toPageResult(SearchCountPager.of(1, 10, true));
117+
118+
Assert.assertNotNull(listenerContext.getJdbcExecuteAfterArgs());
119+
120+
{
121+
122+
JdbcExecuteAfterArg jdbcExecuteAfterArg = listenerContext.getJdbcExecuteAfterArgs().get(0);
123+
Assert.assertEquals("SELECT COUNT(*) FROM `t_topic` WHERE `title` LIKE ?", jdbcExecuteAfterArg.getBeforeArg().getSql());
124+
Assert.assertEquals("%123%(String)", EasySQLUtil.sqlParameterToString(jdbcExecuteAfterArg.getBeforeArg().getSqlParameters().get(0)));
125+
}
126+
{
127+
JdbcExecuteAfterArg jdbcExecuteAfterArg = listenerContext.getJdbcExecuteAfterArgs().get(1);
128+
Assert.assertEquals("SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` WHERE `title` LIKE ? LIMIT 10", jdbcExecuteAfterArg.getBeforeArg().getSql());
129+
Assert.assertEquals("%123%(String)", EasySQLUtil.sqlParameterToString(jdbcExecuteAfterArg.getBeforeArg().getSqlParameters().get(0)));
130+
}
131+
listenerContextManager.clear();
132+
}
133+
System.out.println("不要查询count");
134+
135+
136+
{
137+
138+
139+
ListenerContext listenerContext = new ListenerContext(true);
140+
listenerContextManager.startListen(listenerContext);
141+
142+
PageResult<Topic> pageResult2 = easyEntityQuery.queryable(Topic.class)
143+
.where(t_topic -> {
144+
t_topic.title().like("123");
145+
}).toPageResult(SearchCountPager.of(1, 10, false));
146+
147+
Assert.assertNotNull(listenerContext.getJdbcExecuteAfterArgs());
148+
149+
{
150+
JdbcExecuteAfterArg jdbcExecuteAfterArg = listenerContext.getJdbcExecuteAfterArgs().get(0);
151+
Assert.assertEquals("SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` WHERE `title` LIKE ? LIMIT 10", jdbcExecuteAfterArg.getBeforeArg().getSql());
152+
Assert.assertEquals("%123%(String)", EasySQLUtil.sqlParameterToString(jdbcExecuteAfterArg.getBeforeArg().getSqlParameters().get(0)));
153+
}
154+
listenerContextManager.clear();
155+
}
156+
{
157+
158+
159+
ListenerContext listenerContext = new ListenerContext(true);
160+
listenerContextManager.startListen(listenerContext);
161+
162+
EasyPageResult<Topic> pageResult2 = easyEntityQuery.queryable(Topic.class)
163+
.where(t_topic -> {
164+
t_topic.id().isNotNull();
165+
}).orderBy(t_topic -> t_topic.createTime().asc()).toPageResult(7, 10);
166+
167+
Assert.assertNotNull(listenerContext.getJdbcExecuteAfterArgs());
168+
169+
{
170+
{
171+
172+
JdbcExecuteAfterArg jdbcExecuteAfterArg = listenerContext.getJdbcExecuteAfterArgs().get(0);
173+
Assert.assertEquals("SELECT COUNT(*) FROM `t_topic` WHERE `id` IS NOT NULL", jdbcExecuteAfterArg.getBeforeArg().getSql());
174+
// Assert.assertEquals("%123%(String)", EasySQLUtil.sqlParameterToString(jdbcExecuteAfterArg.getBeforeArg().getSqlParameters().get(0)));
175+
}
176+
{
177+
JdbcExecuteAfterArg jdbcExecuteAfterArg = listenerContext.getJdbcExecuteAfterArgs().get(1);
178+
Assert.assertEquals("SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` WHERE `id` IS NOT NULL ORDER BY `create_time` DESC LIMIT 10 OFFSET 31", jdbcExecuteAfterArg.getBeforeArg().getSql());
179+
// Assert.assertEquals("%123%(String)", EasySQLUtil.sqlParameterToString(jdbcExecuteAfterArg.getBeforeArg().getSqlParameters().get(0)));
180+
}
181+
}
182+
listenerContextManager.clear();
183+
}
184+
}
97185
}

‎sql-test/src/main/java/com/easy/query/test/entity/relation/BookNavigateExtraFilterStrategy.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.easy.query.test.entity.relation;
22

33
import com.easy.query.core.basic.extension.navigate.NavigateBuilder;
4+
import com.easy.query.core.basic.extension.navigate.NavigateExtraFilterCancelable;
45
import com.easy.query.core.basic.extension.navigate.NavigateExtraFilterStrategy;
56
import com.easy.query.core.expression.lambda.SQLExpression1;
67
import com.easy.query.core.expression.parser.core.base.WherePredicate;
@@ -15,7 +16,7 @@
1516
*
1617
* @author xuejiaming
1718
*/
18-
public class BookNavigateExtraFilterStrategy implements NavigateExtraFilterStrategy {
19+
public class BookNavigateExtraFilterStrategy implements NavigateExtraFilterStrategy, NavigateExtraFilterCancelable {
1920
@Override
2021
public SQLExpression1<WherePredicate<?>> getPredicateFilterExpression(NavigateBuilder builder) {
2122
//parentType
@@ -49,4 +50,9 @@ public SQLExpression1<WherePredicate<?>> getPredicateMappingClassFilterExpressio
4950
}
5051
return null;
5152
}
53+
54+
@Override
55+
public String name() {
56+
return "BookNavigateExtraFilterStrategy";
57+
}
5258
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.easy.query.test.page.mp;
2+
3+
import com.easy.query.core.api.pagination.EasyPageResult;
4+
import com.easy.query.core.api.pagination.Pager;
5+
import com.easy.query.core.basic.api.select.Query;
6+
import com.easy.query.core.basic.api.select.executor.PageAble;
7+
import com.easy.query.test.common.MyPageResult;
8+
import com.easy.query.test.common.PageResult;
9+
10+
import java.util.List;
11+
12+
/**
13+
* create time 2025/2/19 10:18
14+
* 文件说明
15+
*
16+
* @author xuejiaming
17+
*/
18+
public class SearchCountPager<TEntity> implements Pager<TEntity, PageResult<TEntity>> {
19+
private final long pageIndex;
20+
private final long pageSize;
21+
private final boolean searchCount;
22+
23+
public SearchCountPager(long pageIndex, long pageSize, boolean searchCount) {
24+
this.pageIndex = pageIndex;
25+
this.pageSize = pageSize;
26+
this.searchCount = searchCount;
27+
}
28+
29+
@Override
30+
public PageResult<TEntity> toResult(PageAble<TEntity> query) {
31+
if (searchCount) {
32+
EasyPageResult<TEntity> pageResult = query.toPageResult(pageIndex, pageSize);
33+
return new MyPageResult<>(pageResult.getTotal(), pageResult.getData());
34+
}
35+
//设置每次获取多少条
36+
long take = pageSize <= 0 ? 0 : pageSize;
37+
//设置当前页码最小1
38+
long index = pageIndex <= 0 ? 1 : pageIndex;
39+
//需要跳过多少条
40+
long offset = (index - 1) * take;
41+
List<TEntity> list = ((Query<TEntity>) query).limit(offset, take).toList();
42+
return new MyPageResult<>(-1, list);
43+
}
44+
45+
public static <TEntity> SearchCountPager<TEntity> of(long pageIndex, long pageSize, boolean search){
46+
return new SearchCountPager<>(pageIndex,pageSize,search);
47+
}
48+
}

0 commit comments

Comments
 (0)
Please sign in to comment.