1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql.delete;
17
18 import static org.assertj.core.api.Assertions.assertThat;
19 import static org.junit.jupiter.api.Assertions.assertAll;
20 import static org.mybatis.dynamic.sql.SqlBuilder.*;
21
22 import java.sql.JDBCType;
23
24 import org.junit.jupiter.api.Test;
25 import org.mybatis.dynamic.sql.SqlColumn;
26 import org.mybatis.dynamic.sql.SqlTable;
27 import org.mybatis.dynamic.sql.delete.render.DeleteStatementProvider;
28 import org.mybatis.dynamic.sql.render.RenderingStrategies;
29
30 class DeleteStatementTest {
31 private static final SqlTable foo = SqlTable.of("foo");
32 private static final SqlColumn<Integer> id = foo.column("id", JDBCType.INTEGER);
33 private static final SqlColumn<String> firstName = foo.column("first_name", JDBCType.VARCHAR);
34
35 @Test
36 void testFullStatement() {
37 DeleteStatementProvider deleteStatement = deleteFrom(foo)
38 .where(id, isEqualTo(3), and(firstName, isEqualTo("Betty")))
39 .or(firstName, isLikeCaseInsensitive("%Fr%"))
40 .build()
41 .render(RenderingStrategies.MYBATIS3);
42
43 String expectedFullStatement = "delete from foo where (id = #{parameters.p1,jdbcType=INTEGER} and first_name = #{parameters.p2,jdbcType=VARCHAR}) or upper(first_name) like #{parameters.p3,jdbcType=VARCHAR}";
44
45 assertAll(
46 () -> assertThat(deleteStatement.getDeleteStatement()).isEqualTo(expectedFullStatement),
47 () -> assertThat(deleteStatement.getParameters()).hasSize(3),
48 () -> assertThat(deleteStatement.getParameters()).containsEntry("p1", 3),
49 () -> assertThat(deleteStatement.getParameters()).containsEntry("p2", "Betty"),
50 () -> assertThat(deleteStatement.getParameters()).containsEntry("p3", "%FR%")
51 );
52 }
53
54 @Test
55 void testFullStatementWithoutWhere() {
56 DeleteStatementProvider deleteStatement = deleteFrom(foo)
57 .build()
58 .render(RenderingStrategies.MYBATIS3);
59
60 String expectedFullStatement = "delete from foo";
61
62 assertAll(
63 () -> assertThat(deleteStatement.getDeleteStatement()).isEqualTo(expectedFullStatement),
64 () -> assertThat(deleteStatement.getParameters()).isEmpty()
65 );
66 }
67 }