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
相关推荐
### OFBiz Framework Quick Reference Book (版本 1.5.1) #### OFBiz 开发流程概述 本参考手册为 OFBiz 开发者提供了快速入门指南,适用于 Apache OFBiz 1.5.1 版本。OFBiz 是一个开源的企业级电子商务框架,支持...
- **关闭OFBiz**:介绍安全停止服务的方法。 - **OFBiz首次巡览**: - **访问OFBiz**:说明如何通过浏览器访问OFBiz应用。 - **探索Web应用程序“ecommerce”**:介绍该模块的功能和使用场景。 - **购物体验**...
- **分配内存给 OFBiz**:介绍如何为 OFBiz 分配足够的内存。 - **启动 OFBiz 并验证启动过程**:详细说明启动 OFBiz 的步骤及如何确认启动成功。 - **查看实时日志**:说明如何在 OFBiz 运行时查看实时的日志...
OFBiz 是一个强大的开源企业应用框架,它采用松耦合的架构设计,使得开发者能够更加灵活地构建和管理企业级应用程序。在这个框架中,配置文件起着至关重要的作用,它们帮助定义系统的行为和数据源。以下是一些OFBiz...
在OFBiz框架中,数据模型是所有应用程序的核心组成部分之一,它定义了应用程序如何与数据库交互以及如何存储数据。本篇文档将详细解析“OFBiz数据模型”中的关键部分,尤其是预算(Budget)相关的实体定义及其属性,...
【OFBiz教程-初学者开发指南】 OFBiz(Open For Business Project)是一个开源的企业级业务应用框架,旨在提供一套全面的电子商务解决方案。本教程专为初学者设计,旨在解决OFBiz入门过程中的常见问题,帮助开发者...
- **OFBiz** 是一款开源的企业级电子商务框架,支持多种业务场景,包括但不限于电子商务、供应链管理等。 - **主题(Themes)** 在 OFBiz 中指的是用于定制化用户界面外观的设计模板集合,主要包括 CSS 样式、图片、...
- **实体模型**:实体引擎管理数据库中的对象,通过Entity Engine XML定义实体关系。 - **工作流引擎**:Process Engine负责业务流程的定义和执行。 4. **OFBiz开发** - **页面设计**:使用FreeMarker模板语言...
- **OFBiz**(Open For Business)是一款开源的企业级电子商务框架,主要用于构建和部署各种类型的业务应用,包括电子商务、供应链管理等。 - **目标读者**:初次接触OFBiz的技术人员或学生。 - **主要内容**:本...
- **1.2.2 在Eclipse中启动Ofbiz** - 创建一个新的Ofbiz项目。 - 配置项目的运行环境。 - 启动Ofbiz服务器。 #### 二、框架结构 **2.1 Ofbiz概况** - Ofbiz是一个开源的企业级应用框架,支持ERP(企业资源计划...
<entity entity-name="GroupForum" package-name="org.ofbiz.group"> ... </entity> ``` 此配置定义了一个名为`GroupForum`的实体,其对应数据库中的某个表,并指定了实体所在的包路径。 #### 三、总结 通过...
`component-load.xml`是Ofbiz系统启动时读取的配置文件之一,它负责在运行时加载和初始化组件。这个文件包含了组件的配置信息,如组件名称、描述、依赖关系、服务定义、事件处理等。理解并能熟练编辑此文件对于...
本文档旨在详细介绍OFBIZ中的实体引擎配置,首先概述实体引擎的基本概念,然后深入探讨`entityengine.xml`文件中各个元素的具体用法。 #### 二、实体引擎概述 在OFBIZ中,实体引擎负责处理数据库操作,如查询、...
### Apache OFBiz Cookbook 知识点解析 #### 一、Apache OFBiz 概述 - **定义**:Apache OFBiz(Open For Business)是一款开源的企业级应用框架,它集成了ERP(企业资源规划)、CRM(客户关系管理)以及E-...
### Apache OFBiz Datamodel 4 知识点详解 #### 一、Apache OFBiz Datamodel 概述 Apache OFBiz 是一个开源的企业级电子商务框架,它提供了完整的业务流程管理、内容管理和电子交易处理功能。OFBiz Datamodel 作为...
SCA与OFBiz** SCA是OFBiz的核心,它强调了服务的解耦和组合,允许开发者将复杂的业务逻辑分解为独立的服务单元。在OFBiz中,每个服务都是一个可重用的组件,可以通过服务接口进行交互,极大地提高了代码的复用性和...
### Ofbiz源码阅读笔记之请求控制篇 #### 一、引言 本文档基于Ofbiz 10.04.02版本进行解读,旨在深入分析Ofbiz框架中的请求控制流程及其关键技术点。Ofbiz是一款开源的企业级应用框架,支持多种业务场景,包括电子...
<entity entity-name="StudyCustomer" package-name="org.ofbiz.commonapp.study" title="StudyCustomer Entity"> <field name="customerId" type="id-ne"></field> <field name="customerName" type="lo"></...