package xin.glue.ui.B.B02; import com.posdata.glue.biz.activity.PosActivity; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.PosGenericDao; import com.posdata.glue.dao.PosJdbcDao; import com.posdata.glue.dao.manager.PosQueryDefinition; import com.posdata.glue.dao.manager.PosQueryManager; import com.posdata.glue.dao.vo.PosParameter; import com.posdata.glue.dao.vo.PosRowSet; /** * * @Description 多条件查询 * @author 梅贵平{meiguiping} * @date 2009-1-5 下午01:12:06 * @JDK Version jdk1.4.2 */ public class MutilConditionFind extends PosActivity { public String runActivity(PosContext context) { PosGenericDao dao = this.getDao("mesdao"); PosParameter param = new PosParameter(); PosRowSet rowset = null; //参数:sql、subsql-count、subsqli、parami、resultkey StringBuffer sql = this.getQuerySql(this.getProperty("sql"));//sql查询 int sqlCount= Integer.parseInt(this.getProperty("subsql-count"));//条件个数 int len = 0;//每条SUBSQL的参数个数 int jj = 0; String subsqli = ""; String parami = ""; for(int i=0; i < sqlCount; i++) { subsqli = this.getQuerySql(this.getProperty("subsql"+i)).toString(); parami = this.getProperty("param"+i); // sql.append("\n"+subsqli); if(parami != null) { String[] sqlParam = parami.split("\\|"); len = sqlParam.length; for(int j = 0; j < len; j++) { String[] sss = (String[])context.get(sqlParam[j]); if("".equals(sss[0]))//注意,这里只做了条件不为空的判断 { continue; } if(j==0) { sql.append(subsqli+" \n "); } param.setWhereClauseParameter(jj++, sss[0]); } }//if end }//for end // System.out.println("###################################################\n"+sql.toString()); String resultkey = this.getProperty("resultKey"); rowset = dao.findByQueryStatement(sql.toString() , param); context.put(resultkey, rowset); return PosBizControlConstants.SUCCESS; } //获取query.xml文件中的SQL语句 public StringBuffer getQuerySql(String id) { PosJdbcDao dao = (PosJdbcDao)this.getDao("mesdao"); PosQueryManager ppt = dao.getQueryManager(); PosQueryDefinition x = ppt.getQueryDefinition(id); return new StringBuffer(x.getQueryStatement()); } }