public class ParaDirective extends Directive
一、参数为表达式的用法
1:模板内容
#sql("find")
select * from user where nickName = #para(nickName) and age > #para(age)
#end
2: java 代码
user.template("find", Kv.of("nickName", "prettyGirl").set("age", 18)).find();
3:以上用法会在 #para(expr) 处生成问号占位字符,并且实际的参数放入 SqlPara 对象的参数列表中
二、参数为 int 型数字的用法
1:模板内容
#sql("find")
select * from user where id > #para(0) and id < #para(1)
#end
2: java 代码
user.template("find", 10, 100).find();
3:以上用法会在 #para(0) 与 #para(1) 处生成问号占位字符,并且将 10、100 这两个参数放入
SqlPara 对象的参数列表中
三、4.9.23 新增支持 like、in 子句
### 一般用法,第二个参数传入 "like"、"in" 参数即可
select * from t title like #para(title, "like")
select * from t title like #para(title, "in")
### like 类型第一个参数支持 int 类型
select * from t title like #para(0, "like")
### like 支持左侧与右侧百分号用法
select * from t title like #para(title, "%like")
select * from t title like #para(title, "like%")
### 警告:对于 in 子句,如果 #para 第一个参数是 int 型,并且 java 代码针对 Object... 参数传入的是数组
select * from t id in #para(0, "in")
### 那么 java 代码中要将 Object... 处的参数强制转成 Object,否则参数传递不正确
Integer[] idArray = {1, 2, 3};
Db.template("findByIdArray", (Object)idArray).find();
| 构造器和说明 |
|---|
ParaDirective() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
exec(Env env,
Scope scope,
Writer writer) |
static void |
setCheckParaAssigned(boolean checkParaAssigned) |
void |
setExprList(ExprList exprList)
指令被解析时注入指令参数表达式列表,继承类可以通过覆盖此方法对参数长度和参数类型进行校验
|
getLocation, hasEnd, setLocation, writepublic static void setCheckParaAssigned(boolean checkParaAssigned)
public void setExprList(ExprList exprList)
DirectivesetExprList 在类中 DirectiveCopyright © 2024. All rights reserved.