Permalink
Browse files

add: 自定义SQL 支持 ${abc} @{abc} 这种形式

  • Loading branch information...
wendal committed Dec 23, 2018
1 parent 562b874 commit 34b9520d28e38203074a3fe2cb2f54ad619f6d7d
@@ -88,6 +88,7 @@ Sql 对象 -- org.nutz.dao.sql.Sql
}}}
* 在执行 SQL 前,该占位符会被字符 "{#F0F;*?}" 替换,用来创建 PreparedStatement
* Nutz.Dao 会自动计算 PreparedStatement的索引值
* 从1.r.67的2018-12-23号起的快照版,支持带定界符的`${abc}` 和 `@{abc}` 形式

所有的占位符可以同样的名称出现的多个地方。并且变量占位符和参数占位符的名称不互相干扰,比如:
{{{<JAVA>
@@ -146,6 +146,16 @@ else if (stack.firstEquals("{CALL"))
}

private static int readTokenName(char[] cs, int i, StringBuilder sb) {
// 自定义SQL 支持 ${abc} @{abc} 这种形式
if (cs[i+1] == '{') {
for (i+=2; i < cs.length; i++) {
if (cs[i] == '}')
return i;
else
sb.append(cs[i]);
}
return i;
}
for (++i; i < cs.length; i++) {
int b = (int) cs[i];
// Special case for underline ('_')
@@ -29,4 +29,13 @@ public void test_sql_get_list() {
assertTrue(re == list);
}

// https://nutz.cn/yvr/t/2emsd1ma36g99rmnqtq6o87skj
@Test
public void test_sql_with_many_vars() {
String str = Sqls.create("${a}${b}").setVar("a", 1).setVar("b", 2).toString();
assertEquals(str, "12");

str = Sqls.create("${a}_${b}").setVar("a", 1).setVar("b", 2).toString();
assertEquals(str, "1_2");
}
}

0 comments on commit 34b9520

Please sign in to comment.