`
mf1389004071
  • 浏览: 73871 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
1ab096d2-14d4-3a83-b102-8097ee3bdc66
OFBiz进阶-OFC
浏览量:51798
社区版块
存档分类
最新评论

OFBiz进阶--OFBiz标签之[*Services.xml]-mililang介绍与分析(四)[<*find|entity|related|store|r]

阅读更多

OFBiz进阶--OFBiz标签之
                 [*Services.xml]-mililang介绍与分析(四)




     Mililang标签:  
          <*find|entity|related|store|remove*>, 实体操作(Entity Engine Operations)

     标签规则: [simple-methods.xsd] 新版本还有 [simple-methods-v2.xsd]

    <now-date-to-env field=""/><!-- 使用系统当前时间创建一个 java.sql.Date 类型的日期 -->
    <now-date-to-env field="nowDate"/>
    
    <now-timestamp field=""/><!-- 使用系统当前时间创建一个 java.sql.Timestamp 类型的日期时间 -->
    <now-timestamp field="nowTimestamp"/>
    
    <sequenced-id sequence-name="" field="" stagger-max="" get-long-only="false"/>
      <!-- 获取sequenced-id: 序列号生成的字段名; field传入指定变量; stagger-max序列号的最大值; get-long-only仅返回 java.lang.Long 类型值 -->
      <sequenced-id sequence-name="FinAccount" field="finAccountId"/>
      <sequenced-id sequence-name="FinAccountTrans" field="newEntity.finAccountTransId"/>
    
    <make-next-seq-id seq-field-name="" value-field="" increment-by="1" numeric-padding="5"/>
      <!-- 创建第二序列ID: seq-field-name主键序列的字段名; value-field结果变量名; increment-by步进值; numeric-padding数据值宽度(5=00001); -->
      <make-next-seq-id value-field="newEntity" seq-field-name="acctgTransEntrySeqId" numeric-padding="5"/>
    
    <entity-data location="" delegator-name="" mode="load" timeout="-1" error-list-name="error_list"/>
      <!-- 通过指定路径加载实体数据: location执行文件路径; delegator-name默认委托者; mode载入方式(load负载/assert断言); timeout超时限制(-1标识不限制); error-list-name错误消息集合名; -->
    
<!-- ================ -->
    <find-by-and list="" map="" entity-name="" order-by-list="" delegator-name="" use-cache="false" use-iterator="false"/>
      <!-- 此标签类似与delegator.findByAnd(); list结果集; map传入map条件; entity-name实体名; order-by-list字段排序; 
        delegator-name委托者变量; use-cache不使用缓存; use-iterator不返回迭代器; -->
        <find-by-and entity-name="InventoryItem" map="lookupFieldMap" list="secondaryInventoryItemList" order-by-list="orderByList"/>
    
    <find-by-primary-key value-field="" map="" delegator-name="" entity-name="" fields-to-select-list="" use-cache="false"/>
      <!-- 此标签类似与delegator.findByPrimaryKey(); value-field返回对象; map传入map条件; delegator-name委托者变量; entity-name表名; 
        fields-to-select-list指定返回字段的集合; use-cache不使用缓存; -->
        <find-by-primary-key entity-name="Invoice" map="lookupPKMap" value-field="invoiceValue"/>
    
    <entity-and list="noteMainStatus" entity-name="NoteMainStatus" filter-by-date="false" use-cache="false">
       <!-- 按条件获取list结果集: list结果集名称; entity-name实体名; filter-by-date启动按时间过滤(数据过期问题验证的开关;); result-set-type结果集类型(forward/scroll); use-cache不缓存; -->
          
       <field-map field-name="noteStatusCode" value="DEFAULT_NOTE" from-field=""/>
       <select-field field-name="noteStatusCode"/>
       <order-by field-name="noteStatusCode"/>
       <limit-range size="3" start="0"/>
<!--        <limit-view view-size="" view-index=""/> -->
<!--        <use-iterator/> -->
            <!-- use-iterator这个标签如果设置了, 则输出一个 iterator迭代器(org.ofbiz.entity.util.EntityListIterator), 默认没有输出的是 list(java.util.List) -->
      <!-- 上述各个子标签参数详见下面标签 entity-condition 的解析 -->
    </entity-and>
    <entity-and entity-name="FinAccountStatus" list="oldFinAccountStatusList">
        <field-map field-name="finAccountId" from-field="parameters.finAccountId"/>
        <order-by field-name="-statusDate"/>
    </entity-and>
    
    <entity-condition list="typeList" entity-name="NoteMainType" delegator-name="" distinct="true" filter-by-date="false" use-cache="false">
      <!-- 按条件获取实体: list获取到的结果list集合名称; entity-name被获取的表名; delegator-name代理器名称(默认是default); distinct区分不同; filter-by-date启动按时间过滤(数据过期问题验证的开关;); result-set-type结果集类型(forward/scroll); use-cache不缓存; -->
        <!-- result-set-type结果集类型(forward/scroll) -->
        <!-- filter-by-date, 指定查询必须过滤掉这些当前不激活的记录。不激活的记录的字段fromDate和thruDate(两个日期-时间类型的字段),不包含当前时间。
          .好的(知道更远注意力)非过期一条记录的正确方法是设置thruDate自动为null(在电脑术语中,这表示“空”或者“没有值“)。 -->
        <!-- 属性filter-by-date即为对记录表数据时间有效性的过滤,使用前提是当前实体必须有fromDate 和 thruDate这两个字段,且不能使用缓存进行查询 ,
        即use-cache="false",转化成sql 表示为 ((thruDate IS NULL OR thruDate > '当前时间') AND (fromDate IS NULL OR fromDate <= '当前时间'))  -->
        <!-- entity-condition当使用缓存进行查询时,不能使用distinct、having-condition-list、select-field。entity-condition查询限制条件最外层必须
        为condition-list、condition-expr、condition-object中的一个,三者不能两两并存。entity-condition的几个子节点配置先后顺序分别为:
        [condition-list、condition-expr、condition-object]三者中的一个、[having-condition-list]、[select-field],[order-by]、
        [use-iterator、limit-view、limit-range]三者中的一个。 -->
      
      <condition-list combine="and">
        <!-- 多个过滤条件的集合; 过滤方式(and/or) -->
      
        <condition-expr field-name="parentTypeId" operator="equals" value="NOTEDEFAULT" ignore="false" ignore-case="false" ignore-if-empty="false" ignore-if-null="false"/>
          <!-- 过滤条件: field-name表字段名称; operator比较方式; from-field比较值的来源; value指定值; ignore不忽略当前过滤条件; ignore-case区分大小写; ignore-if-empty不忽略空对象; ignore-if-null不忽略空 -->
            <!-- operator比较方式(less/greater/less-equals/greater-equals/equals/not-equals/in/not-in/between/like) -->
        
<!--         <condition-object field=""/> -->
          <!-- 对象过滤 -->
        
      </condition-list>
      
<!--       <having-condition-list> -->
        <!-- 字段的 合计函 数过滤集合(下面配置有错, 结果如:HAVING SUM(OrderPrice)<2000) -->
            <!-- having-condition-list一般用于带有group-by 查询的视图实体查询,首先对根据condition-list查询条件进行查询,然后再根据having-condition-list查询条件进行限制查询。 -->
        
<!--         <condition-expr field-name="parentTypeId" operator="equals" value="NOTEDEFAULT" ignore="false" ignore-case="false" ignore-if-empty="false" ignore-if-null="false"/> -->
<!--       </having-condition-list> -->
      
      <select-field field-name="noteTypeId"/>
        <!-- 指定返回表中的指定字段名的数据 -->
        <!-- 属性distinct很好理解,剔除重复数据。需要注意的是如果配合select-field 共同使用的时候,
        判断重复的条件是判断select-field 需要显示字段是否重复,而不是判断当前实体所有的字段,即SQL 执行顺序是 先select-field 再distinct。  -->
      
      <order-by field-name="noteTypeId"/>
        <!-- order-by按指定字段排序; field-name字段名称;  -->
        
      <limit-range size="3" start="0"/>
        <!--限制查询范围: size结果集条数限制(非负整数); start结果集起始页设置(非负整数); -->
        
<!--       <limit-view view-size="" view-index=""/> -->
        <!-- 结果限制: view-size结果集条数限制(非负整数); view-index结果集起始页设置(非负整数), 默认写 1; -->
        
<!--       <use-iterator/> -->
        <!-- 使用迭代器 -->
    </entity-condition>
    <entity-condition entity-name="FinAccountAuth" list="finAccountAuthList" filter-by-date="true">
        <condition-expr field-name="finAccountId" from-field="finAccountId"/>
    </entity-condition>
    
    <entity-count count-field="" entity-name="" delegator-name="default">
      <!-- 实体个数统计: count-field统计的结果输出到此变量; entity-name表名; delegator-name默认委托者 -->
      
      <condition-list>
        <condition-expr field-name=""/>
        <condition-object field=""/><!-- 过滤条件中的: 对象变量(entity-condition创建的), 这里的 obj 一般是 groovy构建的 EntityCondition 对象 -->
      </condition-list>
      <having-condition-list>
        <condition-expr field-name=""/>
        <condition-object field=""/>
      </having-condition-list>
    </entity-count>
    <entity-count count-field="noEftAccounts9000After" entity-name="EftAccount">
        <condition-expr field-name="contactMechId" value="9000"/>
    </entity-count>
    
    <entity-one entity-name="NoteMain" value-field="noteId" auto-field-map="true" use-cache="false">
      <!-- GenericValue lookedUpValue = delegator.findByPrimaryKey("NoteMain", UtilMisc.toMap("noteId", noteId)); -->
      <!-- 通过一定的变量获取单个实体: entity-name实体表名; value-field输出到此变量; auto-field-map自动封装为map; use-cache不使用缓存; -->
      
      <field-map field-name="" from-field="" value=""/><!-- 传入条件变量: field-name变量名; from-field变量来源变量; value变量值; -->
      <select-field field-name=""/><!-- 可选输出哪些字段 -->
    </entity-one>
    <entity-one entity-name="Agreement" value-field="agreement" auto-field-map="true"/>
    
    <get-related relation-name="" list="" value-field="" map="" order-by-list="" use-cache="false"/>
      <!-- 此标签类似与delegator.getRelated(); relation-name关系名; list关系名得到的结果集; value-field获取一个关系变量; 
        map传入map条件; order-by-list排序字段; use-cache不缓存; -->
        <get-related value-field="agreement" relation-name="AgreementTerm" list="agreementTerms"/>
    
    <get-related-one relation-name="" to-value-field="" value-field="" use-cache="false"/>
      <!-- 此标签类似与delegator.getRelatedOne(); relation-name关系名; to-value-field结果变量; value-field获取一个关系变量; use-cache不缓存; -->
      <get-related-one relation-name="Payment" value-field="finAccountTrans" to-value-field="payment"/>
    
    <order-value-list order-by-list="" list="" to-list=""/><!-- 将一个list集合按照 排序list中的字段排序, 将排序后的集合给 to-list变量; -->
    <order-value-list list="facilityLocationList" order-by-list="facilityLocsOrdLst"/>
    
    <filter-list-by-and list="" map="" to-list=""/><!-- 按指定变量过滤list集合: list将要过滤的集合名; map过滤条件变量; to-list过滤后的集合名; -->
    
    <filter-list-by-date list="" all-same="true" to-list="" valid-date="" from-field-name="fromDate" thru-field-name="thruDate"/>
      <!-- 按日期条件过滤list集合: list被过滤的集合名; all-same集合中变量类型是否相同; to-list过滤后的集合名; valid-date校验时间变量; 
        from-field-name开始时间变量; thru-field-name结束时间变量; -->
        <filter-list-by-and list="acctgTransEntryList" map="productFilter" to-list="acctgTransEntryList"/>
    
    
    <!-- ================== -->
    <make-value value-field="newEntity" entity-name="NoteMain" map=""/>
      <!-- make-valu创建变量: value-name创建的表对象变量名; entity-name表名; -->
      <make-value value-field="newEntity" entity-name="Agreement"/>
    
    <clone-value new-value-field="" value-field=""/> <!-- 将 value-field 变量的内容 复制到 new-value-field 指定的变量中; -->
    <clone-value value-field="lookedUpValue" new-value-field="newLookedUpValue"/>
    
    <create-value value-field="newEntity" do-cache-clear="true" or-store="false"/>
      <!-- 表数据创建操作: value-field表对象变量; do-cache-clear执行缓存清理; or-store创建或更新开关(false则只创建, 不更新); -->
      <create-value value-field="newEntity"/>
    
    <store-list list="" do-cache-clear="true"/><!-- 更新list集合中的数据到数据库中: list集合; do-cache-clear清理缓存; -->
    <store-list list="uomConversions"/>
    
    <refresh-value value-field="" do-cache-clear="true"/>
      <!-- 刷新变量: value-field刷新此变量; do-cache-clear清理缓存; -->
      <refresh-value value-field="returnItem"/>
    
    <remove-by-and map="" entity-name="" do-cache-clear="true"/>
      <!-- 此标签类似与delegator.removeByAnd(); map传入map条件; entity-name实体名; do-cache-clear清理缓存; -->
      <remove-by-and entity-name="PaymentApplication" map="paymentApplicationMap"/>
    
    <remove-list list="" do-cache-clear="true"/>
      <!-- 此标签类似与delegator.removeAll(); list将要被remove的集合; do-cache-clear清理缓存; -->
      <remove-list list="quoteTermList"/>
    
    <remove-related relation-name="" value-field="" do-cache-clear="true"/>
      <!-- 此标签类似与delegator.removeByRelated(); relation-name关系名; value-field被移除的变量; do-cache-clear清理缓存; -->
      <remove-related relation-name="PartyNote" value-field="noteData"/>
    
    <remove-value value-field="" do-cache-clear="true"/>
      <!-- 从相应表中删除此 value-field 指定的对象; do-cache-clear清理缓存; -->
      <remove-value value-field="agreementItem"/>
    
    <clear-cache-line entity-name="" map=""/> <!-- 将当前 map变量指定的数据从 entity-name 表所在的系统缓存中清理掉  -->
    
    <clear-entity-caches/> <!-- 它将清除所有实体引擎缓存中的所有行。它没有属性或子元素。 -->
    
    <set-nonpk-fields map="context" value-field="newEntity" set-if-null="true"/>
      <!-- set-nonpk-fields将表的非主键信息封装: map-name传入表对象变量的map; value-name表对象变量; -->
      <set-nonpk-fields map="parameters" value-field="newEntity"/>
    
    <set-pk-fields map="context" value-field="newEntity" set-if-null="true"/>
      <!-- set-pk-fields将表主键信息封装: map-name传入表对象变量的map; value-name表对象变量; -->
      <set-pk-fields map="parameters" value-field="newEntity"/>
    

 



==================================关于本文===================================
 
        作者: mf1389004071
        ......上海_香飘飘
        博客: http://ofbizer.iteye.com/
        邮箱: mf1389004071@163.com
        有此标记, 均为原创, 禁止盗用, 转载请注明来源
        技术无上限, 能力有上限, 欢迎参与交流讨论和提出建议
        本文永久地址: http://ofbizer.iteye.com/blog/2040199
 
 
   

0
0
分享到:
评论

相关推荐

    OFBiz Framework Quick Reference Book

    ### OFBiz Framework Quick Reference Book (版本 1.5.1) #### OFBiz 开发流程概述 本参考手册为 OFBiz 开发者提供了快速入门指南,适用于 Apache OFBiz 1.5.1 版本。OFBiz 是一个开源的企业级电子商务框架,支持...

    ofbiz 英文pdf

    - **关闭OFBiz**:介绍安全停止服务的方法。 - **OFBiz首次巡览**: - **访问OFBiz**:说明如何通过浏览器访问OFBiz应用。 - **探索Web应用程序“ecommerce”**:介绍该模块的功能和使用场景。 - **购物体验**...

    浅谈OFBIZ.doc

    **OFBIZ** 是一款基于 Java 的开源企业级电子商务框架,它提供了完整的业务流程管理解决方案,包括订单处理、库存管理、客户服务支持等功能。为了能够顺利进行 OFBIZ 的开发与测试工作,首先需要搭建一个良好的开发...

    Apache OFBiz Development The Beginner's Tutorial

    - **分配内存给 OFBiz**:介绍如何为 OFBiz 分配足够的内存。 - **启动 OFBiz 并验证启动过程**:详细说明启动 OFBiz 的步骤及如何确认启动成功。 - **查看实时日志**:说明如何在 OFBiz 运行时查看实时的日志...

    ofbiz重要的xml文件详解

    OFBiz 是一个强大的开源企业应用框架,它采用松耦合的架构设计,使得开发者能够更加灵活地构建和管理企业级应用程序。在这个框架中,配置文件起着至关重要的作用,它们帮助定义系统的行为和数据源。以下是一些OFBiz...

    OFBiz数据模型

    在OFBiz框架中,数据模型是所有应用程序的核心组成部分之一,它定义了应用程序如何与数据库交互以及如何存储数据。本篇文档将详细解析“OFBiz数据模型”中的关键部分,尤其是预算(Budget)相关的实体定义及其属性,...

    OFBiz教程-初学者开发指南

    【OFBiz教程-初学者开发指南】 OFBiz(Open For Business Project)是一个开源的企业级业务应用框架,旨在提供一套全面的电子商务解决方案。本教程专为初学者设计,旨在解决OFBiz入门过程中的常见问题,帮助开发者...

    OFBiz 主题修改文档

    - **OFBiz** 是一款开源的企业级电子商务框架,支持多种业务场景,包括但不限于电子商务、供应链管理等。 - **主题(Themes)** 在 OFBiz 中指的是用于定制化用户界面外观的设计模板集合,主要包括 CSS 样式、图片、...

    OFBiz开发快速入门

    - **实体模型**:实体引擎管理数据库中的对象,通过Entity Engine XML定义实体关系。 - **工作流引擎**:Process Engine负责业务流程的定义和执行。 4. **OFBiz开发** - **页面设计**:使用FreeMarker模板语言...

    ofbiz-entry-zh-cn.doc

    - **OFBiz**(Open For Business)是一款开源的企业级电子商务框架,主要用于构建和部署各种类型的业务应用,包括电子商务、供应链管理等。 - **目标读者**:初次接触OFBiz的技术人员或学生。 - **主要内容**:本...

    ofbiz框架简单讲解

    &lt;entity entity-name="GroupForum" package-name="org.ofbiz.group"&gt; ... &lt;/entity&gt; ``` 此配置定义了一个名为`GroupForum`的实体,其对应数据库中的某个表,并指定了实体所在的包路径。 #### 三、总结 通过...

    ofbiz--A Beginners Development Guide--Part 2

    `component-load.xml`是Ofbiz系统启动时读取的配置文件之一,它负责在运行时加载和初始化组件。这个文件包含了组件的配置信息,如组件名称、描述、依赖关系、服务定义、事件处理等。理解并能熟练编辑此文件对于...

    Apache OFBiz Cookbook

    ### Apache OFBiz Cookbook 知识点解析 #### 一、Apache OFBiz 概述 - **定义**:Apache OFBiz(Open For Business)是一款开源的企业级应用框架,它集成了ERP(企业资源规划)、CRM(客户关系管理)以及E-...

    Apache OFBiz Datamodel 4

    ### Apache OFBiz Datamodel 4 知识点详解 #### 一、Apache OFBiz Datamodel 概述 Apache OFBiz 是一个开源的企业级电子商务框架,它提供了完整的业务流程管理、内容管理和电子交易处理功能。OFBiz Datamodel 作为...

    ofbiz_nutshell.rar_ofbiz_open

    SCA与OFBiz** SCA是OFBiz的核心,它强调了服务的解耦和组合,允许开发者将复杂的业务逻辑分解为独立的服务单元。在OFBiz中,每个服务都是一个可重用的组件,可以通过服务接口进行交互,极大地提高了代码的复用性和...

    Ofbiz源码阅读笔记 之 请求控制篇

    ### Ofbiz源码阅读笔记之请求控制篇 #### 一、引言 本文档基于Ofbiz 10.04.02版本进行解读,旨在深入分析Ofbiz框架中的请求控制流程及其关键技术点。Ofbiz是一款开源的企业级应用框架,支持多种业务场景,包括电子...

    Ofbiz 入门教程

    &lt;entity entity-name="StudyCustomer" package-name="org.ofbiz.commonapp.study" title="StudyCustomer Entity"&gt; &lt;field name="customerId" type="id-ne"&gt;&lt;/field&gt; &lt;field name="customerName" type="lo"&gt;&lt;/...

Global site tag (gtag.js) - Google Analytics