做一个虚表与myBatis连用的例子

(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>


记住:有些工作经验长的人总会有我不会的知识,要谦虚学习;这是前辈教的,又学会一招

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值