(select 'sid-85FC31E5-BBE0-458F-944E-5E2D7CD9E9DD' as job_Id,'1' as job_Name,'528' as flow_Id from dual union all select 'sid-6FB44460-DF23-447A-B7CC-06A8587B43C4' as job_Id,'21' as job_Name,'528' as flow_Id from dual union all select 'sid-26ABA0CB-2126-41CE-A1F8-DDBB84A936FD' as job_Id,'2' as job_Name,'528' as flow_Id from dual union all select 'sid-738F82ED-D79E-4656-B1ED-901D9A7C4F80' as job_Id,'22' as job_Name,'528' as flow_Id from dual union all select 'sid-0FCB4847-4664-49F8-AF55-2585E55BF5CA' as job_Id,'3' as job_Name,'528' as flow_Id from dual)
以上是拼接完后sql的例子,数据如下
具体实现java文件代码:
public String getVirtualActivitiesTable(String flowId)throws ActivitiBaseSvcException {
List<IMap> allActivity = getFlowAllActivities(flowId, false);
StringBuffer sb = new StringBuffer("(");
for (Iterator iterator = allActivity.iterator(); iterator.hasNext();) {
IMap iMap = (IMap) iterator.next();
String jobId = iMap.getString("JOB_ID");
String jobName = iMap.getString("JOB_NAME");
sb.append("select '"+jobId+"' as job_Id,'"+jobName+"' as job_Name,'"+flowId+"' as flow_Id from dual");
if(iterator.hasNext()){
sb.append(" union all ");
}
}
if(sb.length()==1){
sb.append("select '1' as jobId,'1' as jobName,'1' as flowId from dual )");
}else{
sb.append(")");
}
return sb.toString();
}
应用如下:
调用后放入map中
params.put("pimJob", virtualtable);
xml文件调用如下:${pimJob}
<select id="getWorkList" resultType="com.ailk.utils.IMap" parameterType="java.util.HashMap" >
select t4.*,t2.*,t1.*,t3.* from pim_work_template t1,pim_work_template_rule t2,pim_flow_define t3 ,${pimJob} t4
where t1.work_template_id=t2.work_template_id
and t2.flow_id=t3.flow_id
and t4.job_Id=t2.job_id
and t4.flow_Id=t3.flow_id
<if test="templateId != null and templateId != ''">
and t1.WORK_TEMPLATE_ID = #{templateId,jdbcType=VARCHAR}
</if>
</select>
记住:有些工作经验长的人总会有我不会的知识,要谦虚学习;这是前辈教的,又学会一招