`
juforg
  • 浏览: 45578 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

普元eos criteria 复杂查询示例 不定长条件

 
阅读更多



 

<table width="100%" class="form_table">
          <tr>
             <td align="right" class="form_label">档案名称&nbsp:</td>
            <td>
               <!-- like 条件 -->
               <h:text property="criteria/_expr[2]/fileName"/>
               <h:hidden property="criteria/_expr[2]/_op" value="like"/>
               <h:hidden property="criteria/_expr[2]/_likeRule" value="all"/>
             </td>
             <td align="right" class="form_label">是否作废&nbsp:</td>
            <td>
            <!-- 等于 条件 -->
                 <h:select id="select2" name="delFlag" property="criteria/_expr[3]/status" onchange="setCriteriaDelFlagValue()">
                <h:option label="请选择" value="" />
                <h:option label="是" value="1" />
                <h:option label="否" value="0" />
                 </h:select>
                  <h:hidden property="criteria/_expr[3]/status" id="criteria3" />
                  <h:hidden property="criteria/_expr[3]/_op" id="criteria3op" />
               </td>
          </tr>
          <tr>
             <td align="right" class="form_label">档案编号&nbsp:</td>
             <td  class="height_td">
               <h:text property="criteria/_expr[4]/code"/>
             </td>
             <td align="right" class="form_label">版本号&nbsp:</td>
             <td  class="height_td">
               <h:text property="criteria/_expr[5]/versionNo" />
             </td>
          </tr>
          <tr class="height_td">
           <!-- between 条件 -->
     <h:hidden property="criteria/_expr[6]/_op" value="between" />
     <h:hidden property="criteria/_expr[6]/placeTime" value=" " />
     <h:hidden property="criteria/_expr[6]/_pattern" value="yyyy-MM-dd HH:mm:ss"/>
             <td align="right" class="form_label">归档开始时间&nbsp:</td>
             <td class="height_td">
               <w:date property="criteria/_expr[6]/_min" format="yyyy-MM-dd HH:mm:ss" id = "startDate"/>
             </td>
             <td align="right" class="form_label">归档结束时间&nbsp:</td>
             <td class="height_td">
               <w:date property="criteria/_expr[6]/_max" format="yyyy-MM-dd HH:mm:ss" id = "endDate"/>
             </td>
          </tr>
          <tr class="height_td">
             <td align="right" class="form_label">数据安全等级&nbsp:</td>
             <td class="height_td" colspan="3">
              <h:radio property="criteria/_expr[7]/safeClass" value="绝密级"/>绝密级&nbsp;&nbsp;&nbsp;&nbsp;
              <h:radio property="criteria/_expr[7]/safeClass" value="秘密级"/>秘密级&nbsp;&nbsp;&nbsp;&nbsp;
              <h:radio property="criteria/_expr[7]/safeClass" value="内部级"/>内部级&nbsp;&nbsp;&nbsp;&nbsp;
              <h:radio property="criteria/_expr[7]/safeClass" value="公共级"/>公共级&nbsp;&nbsp;&nbsp;&nbsp;
             </td>
             
          </tr>
          <l:notEmpty property="tblArchivesKeywords">
           <l:iterate id="classKeyWords" property="tblArchivesKeywords" indexId="id1" >
               <l:output oddOutput=" <tr>" />
               <td align="right" class="form_label"><b:write iterateId="classKeyWords" property="keywordsName"/>&nbsp:</td>
               <td>
                <h:hidden name="criteria/_and[1]/_or[1]/_and[${id1}]/_expr[1]/keywordsId" property="keywordsId" iterateId="classKeyWords"/>
                <h:hidden property="criteria/_and[1]/_or[1]/_and[${id1}]/_expr[2]/_op" value="like"/>
                 <h:text property="criteria/_and[1]/_or[1]/_and[${id1}]/_expr[2]/keyValue" />
               </td>
               <l:output evenOutput=" </tr>" />
         </l:iterate>
       </l:notEmpty>
          <tr  align="center" >
           <td colspan="4" >
            <input type="button"  value="查询" class="button" id="saveBtn" style="width:150px;" />
           </td>
          </tr>
          </table>
          <!-- 查询字段 -->
             <h:hidden property="criteria/_select/_field[1]" value="fileId"/>
             <h:hidden property="criteria/_select/_field[2]" value="classificationId"/>
             <h:hidden property="criteria/_select/_field[3]" value="fileName"/>
             <h:hidden property="criteria/_select/_field[4]" value="source"/>
             <h:hidden property="criteria/_select/_field[5]" value="placeTime"/>
             <h:hidden property="criteria/_select/_field[6]" value="code"/>
             <h:hidden property="criteria/_select/_field[7]" value="status"/>
            
             <h:hidden property="criteria/_distinct" value="true"/>
 

 

生成的SQL 语句

 

SELECT COUNT(*) EOS_ROW_COUNT
  FROM (SELECT DISTINCT THIS_.FILE_ID           AS Y0_,
                        THIS_.CLASSIFICATION_ID AS Y1_,
                        THIS_.FILE_NAME         AS Y2_,
                        THIS_.SOURCE            AS Y3_,
                        THIS_.PLACE_TIME        AS Y4_,
                        THIS_.CODE              AS Y5_,
                        THIS_.STATUS            AS Y6_
          FROM (SELECT TAF.FILE_ID,
                       TACF.CLASSIFICATION_ID,
                       TAF.FILE_NAME,
                       TAF.CODE,
                       TAF.STATUS,
                       TAF.SOURCE,
                       TAF.PLACE_TIME,
                       TAKF.KEYWORDS_ID,
                       TAKF.KEY_VALUE
                  FROM TBL_ARCHIVES_FILES TAF
                 RIGHT JOIN TBL_ARCHIVES_CALSS_FILES TACF
                    ON TAF.FILE_ID = TACF.FILE_ID
                  LEFT JOIN TBL_ARCHIVES_KEY_FILE TAKF
                    ON TAKF.FILE_ID = TAF.FILE_ID
                 ORDER BY TAF.FILE_NAME) THIS_
         WHERE (((THIS_.KEYWORDS_ID = ? AND THIS_.KEY_VALUE LIKE ? ESCAPE '~') OR
               (THIS_.KEYWORDS_ID = ? AND THIS_.KEY_VALUE LIKE ? ESCAPE '~')) OR
               (THIS_.KEYWORDS_ID = ? AND THIS_.KEY_VALUE LIKE ? ESCAPE '~'))
           AND THIS_.CLASSIFICATION_ID = ?
           AND THIS_.FILE_NAME LIKE ? ESCAPE '~'
           AND THIS_.STATUS = ?
           AND THIS_.CODE = ?
           AND THIS_.PLACE_TIME BETWEEN ? AND ?) TABLE_

  

 

在java代码中设置查询条件

public CriteriaType handleSearchCriteria(DataObject criteria, DataObject userInfo){
		List<LogicType> andLTList = new ArrayList<LogicType>();
		criteria.setList("_or",andLTList);						//添加and条件
		List<LogicType> orLTList = new ArrayList<LogicType>();
		LogicType lt = new LogicTypeImpl();
		lt.set_or(orLTList);
		andLTList.add(lt);//and条件中添加or条件list
		
		/* 人员 */
		String userId = userInfo.getString("userId");
		String userName = userInfo.getString("realName");
		LogicType perLT = new LogicTypeImpl();
		LogicType perLT1 = new LogicTypeImpl();
		List<ExprType> andListPerson = new ArrayList<ExprType>();
		List<LogicType> andLTListPerson = new ArrayList<LogicType>();
		ExprType etId = new ExprTypeImpl();
		etId.set_op("like");
		etId.set_property("borrowerId");
		etId.set_value(userId);
		andListPerson.add(etId);
		ExprType etName = new ExprTypeImpl();
		etName.set_op("like");
		etName.set_property("borrowerName");
		etName.set_value(userName);
		andListPerson.add(etName);
		perLT1.set_expr(andListPerson);
		andLTListPerson.add(perLT1);
		perLT.set_and(andLTListPerson);
		orLTList.add(perLT);
		/* 岗位 */
		List<DataObject> positionsList = userInfo.getList("positions");
		if (!CollectionUtils.isEmpty(positionsList)) {
			List<LogicType> orLitPO = new ArrayList<LogicType>();
			LogicType poLT = new LogicTypeImpl();
			for (DataObject object : positionsList) {
				List<ExprType> andETList = new ArrayList<ExprType>();
				List<LogicType> andLTListPO = new ArrayList<LogicType>();
				LogicType tmpLt = new LogicTypeImpl();
				LogicType andLt = new LogicTypeImpl();
				ExprType exprType1 = new ExprTypeImpl();
				exprType1.set_op("like");
				exprType1.set_property("positionId");
				exprType1.set_value(object.getString("positionId"));
				andETList.add(exprType1);
				ExprType exprType2 = new ExprTypeImpl();
				exprType2.set_op("like");
				exprType2.set_property("positionName");
				exprType2.set_value(object.getString("positionName"));
				andETList.add(exprType2);
				tmpLt.set_expr(andETList);
				andLTListPO.add(tmpLt);
				andLt.set_and(andLTListPO);
				orLitPO.add(andLt);
			}
			poLT.set_or(orLitPO);
			orLTList.add(poLT);
		}		
		/* 岗位组 */
		List<DataObject> posGroupsList = userInfo.getList("posGroups");
		if (!CollectionUtils.isEmpty(posGroupsList)) {
			List<LogicType> orListPG = new ArrayList<LogicType>();
			LogicType pgLT = new LogicTypeImpl();
			for (DataObject object1 : posGroupsList) {
				List<ExprType> andETLitPG = new ArrayList<ExprType>();
				List<LogicType> andLTListPG = new ArrayList<LogicType>();
				LogicType tmpLt = new LogicTypeImpl();
				LogicType andLt = new LogicTypeImpl();
				ExprType exprType1 = new ExprTypeImpl();
				exprType1.set_op("like");
				exprType1.set_property("positionGroupId");
				exprType1.set_value(object1.getString("posGroupId"));
				andETLitPG.add(exprType1);
				ExprType exprType2 = new ExprTypeImpl();
				exprType2.set_op("like");
				exprType2.set_property("positionGroupName");
				exprType2.set_value(object1.getString("groupName"));
				andETLitPG.add(exprType2);
				tmpLt.set_expr(andETLitPG);
				andLTListPG.add(tmpLt);
				andLt.set_and(andLTListPG);
				orListPG.add(andLt);
			}
			pgLT.set_or(orListPG);
			orLTList.add(pgLT);
		}		
		/* 角色 */
		List<DataObject> rolesList = userInfo.getList("roles");
		if (!CollectionUtils.isEmpty(rolesList)) {
			List<LogicType> orListRO = new ArrayList<LogicType>();
			LogicType roleLT = new LogicTypeImpl();
			for (DataObject object : rolesList) {
				List<ExprType> andETLitRO = new ArrayList<ExprType>();
				List<LogicType> andLTListRO = new ArrayList<LogicType>();
				LogicType tmpLt = new LogicTypeImpl();
				LogicType andLt = new LogicTypeImpl();
				ExprType exprType1 = new ExprTypeImpl();
				exprType1.set_op("like");
				exprType1.set_property("roleId");
				exprType1.set_value(object.getString("roleId"));
				andETLitRO.add(exprType1);
				ExprType exprType2 = new ExprTypeImpl();
				exprType2.set_op("like");
				exprType2.set_property("roleName");
				exprType2.set_value(object.getString("roleName"));
				andETLitRO.add(exprType2);
				tmpLt.set_expr(andETLitRO);
				andLTListRO.add(tmpLt);
				andLt.set_and(andLTListRO);
				orListRO.add(andLt);
			}
			roleLT.set_or(orListRO);
			orLTList.add(roleLT);
		}		
		/* 工作组 */
		List<DataObject> teamrolesList = userInfo.getList("teamroles");
		if (!CollectionUtils.isEmpty(teamrolesList)) {
			List<LogicType> orListTR = new ArrayList<LogicType>();
			LogicType trLT = new LogicTypeImpl();
			for (DataObject object : teamrolesList) {
				List<ExprType> andETLitTR = new ArrayList<ExprType>();
				List<LogicType> andLTListTR = new ArrayList<LogicType>();
				LogicType tmpLt = new LogicTypeImpl();
				LogicType andLt = new LogicTypeImpl();
				ExprType exprType1 = new ExprTypeImpl();
				exprType1.set_op("like");
				exprType1.set_property("workItemId");
				exprType1.set_value(object.getString("grouproleId"));
				andETLitTR.add(exprType1);
				ExprType exprType2 = new ExprTypeImpl();
				exprType2.set_op("like");
				exprType2.set_property("workItemName");
				exprType2.set_value(object.getString("groupRoleName"));
				andETLitTR.add(exprType2);
				tmpLt.set_expr(andETLitTR);
				andLTListTR.add(tmpLt);
				andLt.set_and(andLTListTR);
				orListTR.add(andLt);
			}
			trLT.set_or(orListTR);
			orLTList.add(trLT);
		}	
		//List groupsList = userInfo.getList("groups");
		return (CriteriaType) criteria;
	}

 

生成的SQL语句
SELECT DISTINCT THIS_.FILE_ID           AS Y0_,
                        THIS_.CLASSIFICATION_ID AS Y1_,
                        THIS_.FILE_NAME         AS Y2_,
                        THIS_.SOURCE            AS Y3_,
                        THIS_.PLACE_TIME        AS Y4_,
                        THIS_.CODE              AS Y5_,
                        THIS_.STATUS            AS Y6_,
                        THIS_.IS_RECHECK        AS Y7_,
                        THIS_.BEGIN_TIME        AS Y8_,
                        THIS_.END_TIME          AS Y9_,
                        THIS_.BOROW_RESULT      AS Y10_,
                        THIS_.BORROWER_NAME     AS Y11_,
                        THIS_.APPLY_NAME        AS Y12_,
                        THIS_.BOROW_ID          AS Y13_,
                        THIS_.DB_DATE           AS Y14_
          FROM (SELECT TAF.FILE_ID,
                       TACF.CLASSIFICATION_ID,
                       TAF.FILE_NAME,
                       TAF.CODE,
                       TAF.STATUS,
                       TAF.SOURCE,
                       TAF.IS_RECHECK,
                       TAF.VERSION_NO,
                       TAF.SAFE_CLASS,
                       TAF.PLACE_TIME,
                       TAKF.KEYWORDS_ID,
                       TAKF.KEY_VALUE,
                       TAB.BOROW_ID,
                       TAB.BEGIN_TIME,
                       TAB.END_TIME,
                       TAB.BOROW_DISIC,
                       TAB.BOROW_RESULT,
                       TAB.RESULT_REASON,
                       TAB.BORROWER_ID,
                       TAB.BORROWER_NAME,
                       TAB.POSITION_ID,
                       TAB.POSITION_NAME,
                       TAB.POSITION_GROUP_ID,
                       TAB.POSITION_GROUP_NAME,
                       TAB.ROLE_ID,
                       TAB.ROLE_NAME,
                       TAB.WORK_ITEM_ID,
                       TAB.WORK_ITEM_NAME,
                       TAB.APPLY_ID,
                       TAB.APPLY_NAME,
                       SYSDATE AS DB_DATE
                  FROM TBL_ARCHIVES_FILES TAF
                 RIGHT JOIN TBL_ARCHIVES_CALSS_FILES TACF
                    ON TAF.FILE_ID = TACF.FILE_ID
                  LEFT JOIN TBL_ARCHIVES_KEY_FILE TAKF
                    ON TAKF.FILE_ID = TAF.FILE_ID
                 RIGHT JOIN TBL_ARCHIVES_BORROW TAB
                    ON TAKF.FILE_ID = TAB.FILE_ID
                 ORDER BY TAF.FILE_NAME) THIS_
         WHERE ((((THIS_.BORROWER_ID LIKE ? ESCAPE '~' AND THIS_.BORROWER_NAME LIKE ? ESCAPE '~') 
                OR
               ((((
                	(THIS_.POSITION_ID LIKE ? ESCAPE '~' AND THIS_.POSITION_NAME LIKE ? ESCAPE '~') 
               OR
                  (THIS_.POSITION_ID LIKE ? ESCAPE '~' AND THIS_.POSITION_NAME LIKE ? ESCAPE '~')
               ) 
                OR
               (THIS_.POSITION_ID LIKE ? ESCAPE
                '~' AND THIS_.POSITION_NAME LIKE ? ESCAPE '~')) 
                OR
               (THIS_.POSITION_ID LIKE ? ESCAPE
                '~' AND THIS_.POSITION_NAME LIKE ? ESCAPE '~')) 
                OR
               (THIS_.POSITION_ID LIKE ? ESCAPE
                '~' AND THIS_.POSITION_NAME LIKE ? ESCAPE '~'))) 
                OR
               (THIS_.POSITION_GROUP_ID LIKE ? ESCAPE
                '~' AND THIS_.POSITION_GROUP_NAME LIKE ? ESCAPE '~')) OR
               ((((((((((THIS_.ROLE_ID LIKE ? ESCAPE
                '~' AND THIS_.ROLE_NAME LIKE ? ESCAPE '~') OR
               (THIS_.ROLE_ID LIKE ? ESCAPE
                '~' AND THIS_.ROLE_NAME LIKE ? ESCAPE '~')) OR
               (THIS_.ROLE_ID LIKE ? ESCAPE
                '~' AND THIS_.ROLE_NAME LIKE ? ESCAPE '~')) OR
               (THIS_.ROLE_ID LIKE ? ESCAPE
                '~' AND THIS_.ROLE_NAME LIKE ? ESCAPE '~')) OR
               (THIS_.ROLE_ID LIKE ? ESCAPE
                '~' AND THIS_.ROLE_NAME LIKE ? ESCAPE '~')) OR
               (THIS_.ROLE_ID LIKE ? ESCAPE
                '~' AND THIS_.ROLE_NAME LIKE ? ESCAPE '~')) OR
               (THIS_.ROLE_ID LIKE ? ESCAPE
                '~' AND THIS_.ROLE_NAME LIKE ? ESCAPE '~')) OR
               (THIS_.ROLE_ID LIKE ? ESCAPE
                '~' AND THIS_.ROLE_NAME LIKE ? ESCAPE '~')) OR
               (THIS_.ROLE_ID LIKE ? ESCAPE '~' AND THIS_.ROLE_NAME LIKE ?
                ESCAPE '~')) OR
               (THIS_.ROLE_ID LIKE ? ESCAPE '~' AND THIS_.ROLE_NAME LIKE ?
                ESCAPE '~')))
           AND THIS_.CLASSIFICATION_ID = ?
 
  • 大小: 6.4 KB
  • 大小: 7.4 KB
分享到:
评论

相关推荐

    普元EOS nuiDemo示例

    **普元EOS nuiDemo示例详解** 普元EOS是一款基于Java的企业级应用开发平台,它为开发者提供了丰富的组件和工具,便于快速构建企业信息系统。nui是EOS的一个重要组成部分,专注于用户界面的设计与实现,提供了强大的...

    EOS.rar_EOS_普元_普元EOS_普元EOS教程

    **EOS - 普元企业服务总线** EOS(Enterprise Service Bus),由普元公司研发,是一款高效、灵活的企业服务总线系统。它在SOA(Service-Oriented Architecture,面向服务架构)环境中扮演着核心角色,为企业提供了...

    普元EOS开发帮助手册

    普元EOS开发帮助手册,普元EOS开发帮助手册,普元EOS开发帮助手册,普元EOS开发帮助手册

    普元EOS培训示例源码1

    【普元EOS培训示例源码1】是一个针对普元EOS平台的开发学习资源,包含了多个关键组件和示例代码,旨在帮助用户更好地理解和运用EOS系统。普元EOS(Enterprise Open Service)是一款企业级服务开发与运行平台,它提供...

    普元eos帮助文档

    普元eos是一款由普元信息技术有限公司开发的软件产品,该产品以提供一套高效的开发解决方案为核心,特别在前端开发领域具有较强的竞争力和广泛的使用。普元eos的帮助文档详细介绍了如何安装使用普元前端开发框架NUI...

    EOS5.0 EOSV5.0 上海 普元 EOS5.0应用指南

    根据提供的文件信息,本文将详细解析《EOS5.0 EOSV5.0 上海 普元 EOS5.0应用指南》中所涉及的关键知识点,主要包括PetStore示例的使用说明与tag应用示例的使用说明。 ### PetStore示例使用说明 #### 1.1 查看源...

    普元EOS7.5基础教程(官网版)

    **普元EOS7.5基础教程(官网版)** 普元EOS是一款国内知名的中间件平台,专注于企业级服务总线(Enterprise Service Bus, ESB)和应用服务器领域。EOS7.5版本是其一个重要的迭代,提供了更强大的功能和优化的性能。本...

    普元eos7.5开发手册

    ### 普元EOS Platform 7.5 开发手册知识点概览 #### 一、NUIDemo使用与实践 **1.1 执行SQL脚本** - **知识点概述:** - 在开始学习NUI控件之前,首先需要了解如何执行SQL脚本,这是进行后续开发的基础。 - SQL...

    普元EOS 实例Demo -- Primeton NUI Demo

    "普元EOS 实例Demo -- Primeton NUI Demo" 是一个专为初学者设计的教程,旨在帮助用户快速上手普元EOS平台的使用。普元EOS,全称为Primeton Enterprise Service Oriented Operating System,是一个面向服务的企业级...

    普元EOS程序员培训教程

    普元EOS提供了丰富的功能,包括服务化、工作流、数据集成、消息中间件等,旨在提高开发效率,简化企业应用的复杂性。 ### 1. 普元EOS平台概述 普元EOS是基于Java技术的企业软件基础设施,它提供了一个开放、灵活且...

    普元EOS培训资料 绝对好 初学者的好朋友

    【普元EOS培训资料】是一套专为初学者设计的学习资源,它包含了全面且深入的EOS相关知识,确保用户在完成学习后能够熟练掌握并应用普元EOS平台。这套资料来源于普元公司内部,因此其专业性和实用性得到了充分保证。 ...

    普元EOS7.6安装步骤.pdf

    普元EOS7.6安装步骤涉及多个方面,包括对不同操作系统、不同版本的软件以及不同安装方式的详细指导。以下是对该文件中提到的知识点的详细说明。 ### 1. 概述 普元EOSPlatform7.6是一款企业级软件开发与运行平台,它...

    普元EOS学习PPT

    **普元EOS学习PPT详解** 普元EOS是一款企业级的中间件平台,它提供了全面的服务治理、服务集成以及业务流程管理等功能,帮助企业构建灵活、高效的服务化架构。本篇内容将围绕“普元EOS学习PPT”展开,深入探讨其...

    普元EOS-Platform-7.0基础开发教程完整版

    ### 普元EOS-Platform-7.0基础开发教程知识点详析 #### 一、产品概述 **1.1 产品简介** 普元EOS Platform 7.0是一款基于J2EE、Eclipse等开放技术和平台的产品,它通过配置化、组件化、图形化和一体化的方式,为...

    普元EOS简单运算逻辑的编写

    标题“普元EOS简单运算逻辑的编写”涉及的是在普元EOS平台中如何构建和实现基础的业务逻辑。普元EOS是一款企业级的应用服务器软件,它提供了开发、部署和管理企业应用的服务,支持多种编程语言,包括Java。在这个...

    上海普元EOS6.0程序员教程

    【上海普元EOS6.0程序员教程】是针对软件开发者设计的一份详尽教程,旨在帮助读者理解并掌握面向服务架构(SOA)的核心理念,以及如何利用普元EOS这一全球领先的SOA应用平台进行实际开发。教程不仅理论与实践相结合...

    普元EOS 初学

    根据给定的文件信息,我们可以总结出以下关于“普元EOS初学”的相关知识点: ### 普元EOS简介 普元EOS是一款基于Java技术的企业级应用开发平台,旨在简化企业应用系统的开发、部署和管理过程。EOS提供了一系列工具...

    普元EOS扩展开发教程

    ### 普元EOS扩展开发教程知识点解析 #### 第一章:扩展概述 **1.1 扩展简介** 普元EOS Platform 7.2 的一个核心特点是支持标准化的组件扩展,这使得开发者能够借助其强大的技术平台快速扩展业务组件。这种扩展...

    普元EOS 安装配置资料

    普元EOS是一款国内知名的中间件平台,主要用于构建企业级服务总线(Enterprise Service Bus, ESB)和业务流程管理(Business Process Management, BPM)系统。它提供了服务注册、服务治理、服务安全、服务监控等一...

    普元EOS基础开发指南

    《普元EOS基础开发指南》是一本专注于介绍EOS集成开发环境的详细教程,旨在帮助开发者理解和掌握该平台的各项功能和使用技巧。EOS,全称Enterprise Open Service,是普元信息科技有限公司推出的一款企业级服务软件...

Global site tag (gtag.js) - Google Analytics