diff --git a/hutool-db/src/test/java/cn/hutool/db/NamedSqlTest.java b/hutool-db/src/test/java/cn/hutool/db/NamedSqlTest.java index 6ece77a89e..cf535b29f4 100644 --- a/hutool-db/src/test/java/cn/hutool/db/NamedSqlTest.java +++ b/hutool-db/src/test/java/cn/hutool/db/NamedSqlTest.java @@ -6,6 +6,7 @@ import org.junit.jupiter.api.Test; import java.sql.SQLException; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -125,4 +126,27 @@ public class NamedSqlTest { assertEquals("select * from user where comment = 'include in text' and id = ?", namedSql.getSql()); assertArrayEquals(new int[]{5, 6}, (int[]) namedSql.getParams()[0]); } + + @Test + void selectCaseInTest() { + final HashMap paramMap = MapUtil.of("number", new int[]{1, 2, 3}); + + NamedSql namedSql = new NamedSql("select case when 2 = any(ARRAY[:number]) and 1 in (1) then 1 else 0 end", paramMap); + assertEquals("select case when 2 = any(ARRAY[?]) and 1 in (1) then 1 else 0 end", namedSql.getSql()); + assertArrayEquals(new int[]{1, 2, 3}, (int[])namedSql.getParams()[0]); + } + + @Test + public void parseInsertMultiRowTest() { + // 多行 INSERT 语句 + final Map paramMap = new LinkedHashMap<>(); + paramMap.put("user1", new Object[]{1, "looly"}); + paramMap.put("user2", new Object[]{2, "xxxtea"}); + + String sql = "INSERT INTO users (id, name) VALUES (:user1), (:user2)"; + NamedSql namedSql = new NamedSql(sql, paramMap); + + assertEquals("INSERT INTO users (id, name) VALUES (?), (?)", namedSql.getSql()); + assertArrayEquals(new Object[]{new Object[]{1, "looly"}, new Object[]{2, "xxxtea"}}, namedSql.getParams()); + } }