应用场景(不知道该如何处理):
一个动态sql,除了传入一个Kv的参数外,还想传入别的别的独立参数,去组装sql。
由于Kv.set(key,value)都是键值对,我的sql了需要一个函数条件,没办法放到Kv里传参,如下:
//函数条件 where regexp_like(SERVICE_OBJECT,'1|个人')
//service层方法如下: SqlPara sqlPara = Db.use("oracle").getSqlPara("profolder.paginate",Kv.by("cond",cond)); Page<Record> proFolderList = Db.use("oracle").paginate(pageNumber,10,sqlPara);
参数如下:
Kv cond = Kv.by("1 = ", 1);
if(Project.SEARCH_BY_PERSON.equals(classType)){
cond.set("personKey"," regexp_like(SERVICE_OBJECT,'1')");
}
if(Project.SEARCH_BY_CORPORATION.equals(classType)){
cond.set("companyKey"," regexp_like(SERVICE_OBJECT,'2')");
}
if(!"0".equals(searchOrg)){
cond.set("ORG_CODE = ",searchOrg);
}
sql脚本如下:
#for(x : cond)
#if(x.key == 'personKey' || x.key == 'companyKey')
#(for.first ? "where": "and") #(x.value)
#else
#(for.first ? "where": "and") #(x.key) #para(x.value)
#end
#end