Skip to content

Commit 30cea95

Browse files
committed
Enhancements
1 parent 1cdafd6 commit 30cea95

File tree

3 files changed

+22
-19
lines changed

3 files changed

+22
-19
lines changed

src/test/java/examples/custom_render/CustomRenderingTest.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static org.mybatis.dynamic.sql.SqlBuilder.*;
2121

2222
import java.util.List;
23+
import java.util.Map;
2324
import java.util.Optional;
2425

2526
import org.apache.ibatis.mapping.Environment;
@@ -31,9 +32,12 @@
3132
import org.junit.jupiter.api.BeforeAll;
3233
import org.junit.jupiter.api.BeforeEach;
3334
import org.junit.jupiter.api.Test;
35+
import org.mybatis.dynamic.sql.SqlBuilder;
3436
import org.mybatis.dynamic.sql.SqlColumn;
3537
import org.mybatis.dynamic.sql.delete.DeleteDSLCompleter;
38+
import org.mybatis.dynamic.sql.render.RenderingStrategies;
3639
import org.mybatis.dynamic.sql.select.SelectDSLCompleter;
40+
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
3741
import org.testcontainers.junit.jupiter.Container;
3842
import org.testcontainers.junit.jupiter.Testcontainers;
3943

@@ -42,7 +46,7 @@ public class CustomRenderingTest {
4246

4347
@Container
4448
private static PgContainer postgres = new PgContainer("examples/custom_render/dbInit.sql");
45-
49+
4650
private static SqlSessionFactory sqlSessionFactory;
4751

4852
@BeforeAll
@@ -149,7 +153,7 @@ public void testUpdate() {
149153
}
150154

151155
@Test
152-
public void testJsonQuery() {
156+
public void testDefererence() {
153157
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
154158
JsonTestMapper mapper = sqlSession.getMapper(JsonTestMapper.class);
155159

@@ -167,15 +171,15 @@ public void testJsonQuery() {
167171
assertThat(rows).isEqualTo(2);
168172

169173
Optional<JsonTest> record = mapper.selectOne(c ->
170-
c.where(info, isEqualTo("{\"firstName\": \"Wilma\", \"lastName\": \"Flintstone\", \"age\": 25}")));
174+
c.where(dereference(info, "age"), isEqualTo("25")));
171175

172176
assertThat(record).hasValueSatisfying( c ->
173177
c.getInfo().equals("{\"firstName\": \"Wilma\", \"lastName\": \"Flintstone\", \"age\": 25}"));
174178
}
175179
}
176180

177181
@Test
178-
public void testDefererence() {
182+
public void testDefererence2() {
179183
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
180184
JsonTestMapper mapper = sqlSession.getMapper(JsonTestMapper.class);
181185

@@ -192,15 +196,19 @@ public void testDefererence() {
192196
int rows = mapper.insertMultiple(record1, record2);
193197
assertThat(rows).isEqualTo(2);
194198

195-
Optional<JsonTest> record = mapper.selectOne(c ->
196-
c.where(dereference(info, "->>'age'"), isEqualTo("25")));
199+
SelectStatementProvider selectStatement = SqlBuilder.select(dereference(info, "firstName").as("firstname"))
200+
.from(jsonTest)
201+
.where(dereference(info, "age"), isEqualTo("25"))
202+
.build()
203+
.render(RenderingStrategies.MYBATIS3);
197204

198-
assertThat(record).hasValueSatisfying( c ->
199-
c.getInfo().equals("{\"firstName\": \"Wilma\", \"lastName\": \"Flintstone\", \"age\": 25}"));
205+
List<Map<String, Object>> records = mapper.generalSelect(selectStatement);
206+
assertThat(records.size()).isEqualTo(1);
207+
assertThat(records.get(0).get("firstname")).isEqualTo("Wilma");
200208
}
201209
}
202210

203-
private <T> SqlColumn<String> dereference(SqlColumn<T> column, String drString) {
204-
return SqlColumn.of(column.name() + drString, column.table());
211+
private <T> SqlColumn<String> dereference(SqlColumn<T> column, String attribute) {
212+
return SqlColumn.of(column.name() + "->>'" + attribute + "'", column.table());
205213
}
206214
}

src/test/java/examples/custom_render/JsonTestMapper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Arrays;
66
import java.util.Collection;
77
import java.util.List;
8+
import java.util.Map;
89
import java.util.Optional;
910

1011
import org.apache.ibatis.annotations.DeleteProvider;
@@ -27,6 +28,9 @@
2728
import org.mybatis.dynamic.sql.util.mybatis3.MyBatis3Utils;
2829

2930
public interface JsonTestMapper {
31+
@SelectProvider(type = SqlProviderAdapter.class, method = "select")
32+
List<Map<String, Object>> generalSelect(SelectStatementProvider selectStatement);
33+
3034
@SelectProvider(type = SqlProviderAdapter.class, method = "select")
3135
@Results(id = "JsonTestResult", value = {
3236
@Result(column = "id", property = "id", id = true),

src/test/java/examples/custom_render/PgContainer.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
package examples.custom_render;
22

3-
import java.sql.Connection;
4-
import java.sql.DriverManager;
5-
import java.sql.SQLException;
6-
73
import javax.sql.DataSource;
84

95
import org.apache.ibatis.datasource.unpooled.UnpooledDataSource;
@@ -16,11 +12,6 @@ public PgContainer(String initScriptPath) {
1612
withInitScript(initScriptPath);
1713
}
1814

19-
public Connection connect() throws SQLException {
20-
DriverManager.registerDriver(getJdbcDriverInstance());
21-
return DriverManager.getConnection(getJdbcUrl(), getUsername(), getPassword());
22-
}
23-
2415
public DataSource getUnpooledDataSource() {
2516
return new UnpooledDataSource(getDriverClassName(), getJdbcUrl(), getUsername(), getPassword());
2617
}

0 commit comments

Comments
 (0)