ksql或者sql的where条件中如果有in并且过滤的是多个数据的范围时需要注意不能用一个参数把所有数据都传过去
如下:
要过滤的是001,002这两个数据,那么在传参的时候就不能用(‘参数名’,’001,002′)的方式传,因为这样是把001,002当作一个字符串处理了
这样的可以在java中获取到传过来的参数的值,自己用,截取字符串判断一下,然后再给in的查询赋值
java中定义参考如下:
public static void paramToin(String param){ String ksql = "select xb.* from AP_XSXB xb"; if(param.indexOf(",")>0){ String[] strArray = null; strArray = param.split(","); String newalias =" in('"; for(int i=0 ;i<strArray.length;i++){ if(i != strArray.length-1){ newalias += strArray[i]+"','"; } else newalias += strArray[i]+"'"; } ksql += " where xb.fName"+newalias+")"; } else ksql +=" where xb.fName= '"+param+"'"; Table table = KSQL.select(ksql, null, "/appdemo/test/data", null); }
调用action传参如下:
Model.prototype.button8Click = function(event){ var param = new biz.Request.ActionParam(); param.setString("param", "张三,李四"); biz.Request.sendBizRequest({ "context" : this.getContext(), "parameters" : param, "action" : "paramToinAction", "callback" : function(callbackData) { if (callbackData.state) { alert("执行成功"); } else alert("执行失败"); } }); };
评一波