1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package examples.animal.data;
17
18 import static examples.animal.data.AnimalDataDynamicSqlSupport.animalData;
19 import static examples.animal.data.AnimalDataDynamicSqlSupport.id;
20 import static org.assertj.core.api.Assertions.assertThat;
21 import static org.mybatis.dynamic.sql.SqlBuilder.deleteFrom;
22 import static org.mybatis.dynamic.sql.SqlBuilder.isLessThan;
23 import static org.mybatis.dynamic.sql.SqlBuilder.select;
24 import static org.mybatis.dynamic.sql.SqlBuilder.update;
25
26 import org.junit.jupiter.api.Test;
27 import org.mybatis.dynamic.sql.render.RenderingStrategies;
28
29 class VariousPagingAndLimitScenariosTest {
30
31 @Test
32 void testOptionalLimitOnDelete() {
33 var deleteStatement = deleteFrom(animalData)
34 .limitWhenPresent(null)
35 .build()
36 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
37
38 assertThat(deleteStatement.getDeleteStatement()).isEqualTo("delete from AnimalData");
39 }
40
41 @Test
42 void testOptionalLimitOnDeleteWithWhere() {
43 var deleteStatement = deleteFrom(animalData)
44 .where(id, isLessThan(22))
45 .limitWhenPresent(null)
46 .build()
47 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
48
49 assertThat(deleteStatement.getDeleteStatement())
50 .isEqualTo("delete from AnimalData where id < :p1");
51 }
52
53 @Test
54 void testOptionalLimitOnUpdate() {
55 var updateStatement = update(animalData)
56 .set(id).equalTo(1)
57 .limitWhenPresent(null)
58 .build()
59 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
60
61 assertThat(updateStatement.getUpdateStatement()).isEqualTo("update AnimalData set id = :p1");
62 }
63
64 @Test
65 void testOptionalLimitOnUpdateWithWhere() {
66 var updateStatement = update(animalData)
67 .set(id).equalTo(1)
68 .where(id, isLessThan(22))
69 .limitWhenPresent(null)
70 .build()
71 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
72
73 assertThat(updateStatement.getUpdateStatement()).isEqualTo("update AnimalData set id = :p1 where id < :p2");
74 }
75
76 @Test
77 void testOptionalLimitOnSelect() {
78 var selectStatement = select(animalData.allColumns())
79 .from(animalData)
80 .limitWhenPresent(null)
81 .build()
82 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
83
84 assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData");
85 }
86
87 @Test
88 void testOptionalOffsetOnSelect() {
89 var selectStatement = select(animalData.allColumns())
90 .from(animalData)
91 .offsetWhenPresent(null)
92 .build()
93 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
94
95 assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData");
96 }
97
98 @Test
99 void testOptionalFetchFirstOnSelect() {
100 var selectStatement = select(animalData.allColumns())
101 .from(animalData)
102 .fetchFirstWhenPresent(null).rowsOnly()
103 .build()
104 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
105
106 assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData");
107 }
108
109 @Test
110 void testOptionalLimitAndOffsetOnSelect() {
111 var selectStatement = select(animalData.allColumns())
112 .from(animalData)
113 .limitWhenPresent(null)
114 .offsetWhenPresent(null)
115 .build()
116 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
117
118 assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData");
119 }
120
121 @Test
122 void testOptionalOffsetAndFetchOnSelect() {
123 var selectStatement = select(animalData.allColumns())
124 .from(animalData)
125 .offsetWhenPresent(null)
126 .fetchFirstWhenPresent(null).rowsOnly()
127 .build()
128 .render(RenderingStrategies.SPRING_NAMED_PARAMETER);
129
130 assertThat(selectStatement.getSelectStatement()).isEqualTo("select * from AnimalData");
131 }
132 }