# com.eos.foundation.database.DatabaseUtil

# 构件包说明

本工具类实现了基本的数据库操作。

# 运算逻辑构件使用说明

该构件包包含以下构件:

注意

下列方法中的参数dsName,是指当前构件包中的contribution.eosinf文件中在module name="DataSource"的节点下配置的构件包引用数据源名称。如:

<module name="DataSource">
    <group name="Reference">
        <configValue key="default">default</configValue>
    </group>
</module>

这是每个构件包默认就会有的配置,表示构件包中有个别名为default(这个default是<configValue>中的key的属性值)的数据源,它引用的是user-config.xml中配置的default(这个default是<configValue>的节点值)的数据源。 下面所列的运算逻辑中的参数dsName,应该传入的是<configValue>中的key的属性值,而不是在user-config.xml中配置的数据源的名字。

下面所列的运算逻辑源代码演示示例时,涉及到数据库中的CUST表。因此请确认数据库中是否存在CUST表,如果不存在,请先通过数据模型com.primeton.eos.foundation.example.data.datasetx生成CUST表,再做示例演示。

序号 方法 功能描述
1 count(String dsName, DataObject criteriaEntity) 根据查询实体条件统计记录数
2 countByTemplate(String dsName, DataObject template) 根据SDO数据模板条件统计记录数
3 deleteByCriteriaEntity(String dsName, DataObject criteriaEntity) 根据查询条件实体删除记录,查询条件不能为空,如果为空将返回异常
4 deleteByTemplate(String dsName, DataObject template) 根据SDO数据模板查询条件删除记录,查询条件不能为空,如果为空将返回异常
5 deleteEntity(String dsName, DataObject dataObject) 根据主键删除一条记录
6 deleteEntityBatch(String dsName, DataObject[] dataObjects) 根据主键批量删除多条记录
7 expandEntitiesRelation(String dsName, DataObject[] dataObjects, String property) 扩展一个数据实体数组中每个实体对象的一个关联属性(如对一个懒加载的属性),会进行数据库的查询
8 expandEntity(String dsName, DataObject dataObject) 根据主键扩展查询一条记录,如果dataobject中有非主键的属性值,将根据主键查询出来覆盖原来的属性
9 expandEntityByCriteriaEntity(String dsName, DataObject criteria, DataObject dataObject) 根据查询条件实体的查询结果扩展一个实体
10 expandEntityByTemplate(String dsName, DataObject template, DataObject dataObject) 根据查询模板的查询结果扩展一个实体
11 expandEntityWithLock(String dsName, DataObject dataObject) 根据主键扩展记录,并且将当前记录锁定,如果dataobject中有非主键的属性值,将根据主键查询出来覆盖原来的属性
12 expandLobProperty(String dsName, DataObject entity, String lobPropertyNames) 获取实体的lob属性对应的值
13 expandRelation(String dsName, DataObject dataObject, String property) 扩展一个数据实体对象的一个关联属性(如对一个懒加载的属性),会进行数据库的查询
14 getRelationEntities(String dsName, DataObject dataObject, String property) 根据数据实体对象的关联属性获得关联实体对象数组,返回关联实体对象如果是多对一或一对一关联关系时,将关联的实体对象构造为数组返回;如果是一对多关联关系时,返回关联的实体对象数组
15 getRelationEntity(String dsName, DataObject dataObject, String property) 根据数据实体对象的关联属性获得关联实体对象,返回关联实体对象如果是多对一或一对一关联关系时,返回关联的实体对象;如果是一对多关联关系时,返回关联的实体对象的第一个对象值
16 insertEntity(String dsName, DataObject dataObject) 插入一条记录
17 insertEntityBatch(String dsName, DataObject[] dataObjects) 批量插入记录
18 queryEntitiesByCriteriaEntity(String dsName, DataObject criteriaEntity) 根据查询条件实体查询所有记录,根据查询条件实体指定查询Entity的字段
19 queryEntitiesByCriteriaEntity(String dsName, DataObject criteriaEntity, int begin, int length) 根据查询条件实体查询部分记录,根据查询条件实体指定查询Entity的字段
20 queryEntitiesByTemplate(String dsName, DataObject template) 根据SDO数据模板查询条件查询所有记录,会查询Entity的所有字段
21 queryEntitiesByTemplate(String dsName, DataObject template, int begin, int length) 根据SDO数据模板查询条件查询部分记录,会查询Entity的部分字段
22 saveEntities(String dsName, DataObject[] dataObjects) 保存多条记录
23 saveEntity(String dsName, DataObject dataObject) 保存一条记录
24 updateEntity(String dsName, DataObject dataObject) 更新一条记录
25 updateEntityBatch(String dsName, DataObject[] dataObjects) 批量更新记录
26 updateEntityByCriteriaEntity(String dsName, DataObject value, DataObject criteriaEntity) 根据criteria entity查询条件更新记录
27 updateEntityByTemplate(String dsName, DataObject value, DataObject template) 根据SDO数据模板查询条件更新记录

# count:根据查询条件实体条件统计记录数

# 【功能说明】

根据查询条件实体条件统计记录数。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.count,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 criteriaEntity DataObject 查询条件实体
返回值 out0 int 记录数
  1. 抛出异常说明 统计记录出错时抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 关于查询条件实体的说明请参考《EOS基础参考手册》中的"数据服务\CriteriaEntity"。

# 【参考案例】

示例:根据CUST表查询条件统计查询结果总记录数。

  • 场景描述 用户维护CUST表,在通过查询条件实体对CUST查询操作时,根据条件进行统计CUST记录。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 criteriaEntity DataObject criteria 变量 传引用
返回值 out0 int count 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询实体criteriaEntity
    • 返回值是根据查询条件实体条件统计的记录数
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteria __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __id="2" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="3" __index="0" __type="sdo:com.primeton.das.criteria.exprType">
                    <_op __type="java:java.lang.String">in</_op>
                    <_min/>
                    <_max/>
                    <_likeRule/>
                    <_dateRule/>
                    <_pattern/>
                    <_year/>
                    <_quarter/>
                    <_month/>
                    <_opProperty/>
                    <_ref/>
                    <_processNullValue/>
                    <CUSTID __type="java:java.lang.String">2,3</CUSTID>
                </__entry>
            </_expr>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteria>
    </__root>
</bizContext>
  • 等效的SQL语句
select count(*)  from CUST where CUSTID in (2,3)
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <count __type="java:java.lang.Integer">2</count>
        <criteria __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __id="2" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="3" __index="0" __type="sdo:com.primeton.das.criteria.exprType">
                    <_op __type="java:java.lang.String">in</_op>
                    <_min/>
                    <_max/>
                    <_likeRule/>
                    <_dateRule/>
                    <_pattern/>
                    <_year/>
                    <_quarter/>
                    <_month/>
                    <_opProperty/>
                    <_ref/>
                    <_processNullValue/>
                    <CUSTID __type="java:java.lang.String">2,3</CUSTID>
                </__entry>
            </_expr>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteria>
    </__root>
</bizContext>

# countByTemplate:根据SDO数据模板查询条件统计记录数

# 【功能说明】

根据SDO数据模板查询条件统计记录数。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.countByTemplate,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 template DataObject SDO数据模板查询条件
返回值 out0 int 记录数
  1. 抛出异常说明 统计记录出错时抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:根据CUST模板统计查询结果总记录数。

  • 场景描述 用户维护CUST表,根据CUST数据模板作为查询条件进行统计操作,如果模板中的对象都为空条件,则统计所有记录。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 template DataObject template 变量 传引用
返回值 out0 int count 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询实体criteriaEntity
    • 返回值是根据SDO数据模板查询条件统计的记录数
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <template __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>
  • 等效的SQL语句
select count(*) from CUST where BIRTH=to_date('2009-09-09','yyyy-MM-dd')
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <count __type="java:java.lang.Integer">2</count>
        <template __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>

# deleteByCriteriaEntity:根据查询条件实体删除记录

# 【功能说明】

根据查询条件实体删除记录,查询条件不能为空,如果为空将返回异常。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.deleteByCriteriaEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 criteriaEntity DataObject SDO查询条件实体
返回值 out0 int 删除记录条数
  1. 抛出异常说明 删除出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 关于查询条件实体的说明请参考《EOS基础参考手册》中的"数据服务\CriteriaEntity"。

# 【参考案例】

示例:根据查询条件实体删除CUST表的数据。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 criteriaEntity DataObject criteriaEntity 变量 传引用
返回值 out0 int result 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询实体criteriaEntity
    • 返回值是被修改记录返回值
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteriaEntity __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __collection="list"/>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteriaEntity>
    </__root>
</bizContext>
  • 等效的SQL语句
delete from CUST
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteriaEntity __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __collection="list"/>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteriaEntity>
        <result __type="java:java.lang.Integer">2</result>
    </__root>
</bizContext>

# deleteByTemplate:根据SDO数据模板查询条件删除记录

# 【功能说明】

根据SDO数据模板查询条件删除记录,查询条件不能为空,如果为空将返回异常。与deleteEntity不同的是,它可一次删除多条满足条件的记录。所有操作隶属于一个原子事务。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.deleteByTemplate,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 template DataObject SDO数据模板(不一定需要主键字段,该构件可以删除所有满足条件的记录)
返回值 out0 int 删除的记录条数
  1. 抛出异常说明 删除出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:根据查询模板从CUST表中删除记录。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 template DataObject template 变量 传引用
返回值 out0 int result 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO数据模板,这里作为删除条件的数据模板
    • 返回值是根据数据模板条件删除的记录数
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <template __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">4</CUSTID>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>
  • 等效的SQL语句
delete from CUST where CUSTID=4;
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <result __type="java:java.lang.Integer">0</result>
        <template __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">4</CUSTID>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>

# deleteEntity:根据主键删除一条记录

# 【功能说明】

根据主键删除一条记录,不支持级联操作。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.deleteEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象(必须包含主键字段)
  1. 抛出异常说明 删除出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:从CUST表中删除一条记录。

  • 场景描述 用户维护CUST表,选择一条CUST记录根据主键执行删除操作。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject cust 变量 传引用
  • 参数描述

  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <cust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">1</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_1</CUSTCODE>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </cust>
    </__root>
</bizContext>
  • 等效的SQL语句
delete from CUST where CUSTID=1 and CUSTCODE='cust_1'
  • 调用后的bizContext 同调用前。

# deleteEntityBatch:删除多条记录

# 【功能说明】

用来删除多条记录,所有操作隶属于一个原子事务。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.deleteEntityBatch,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObjects DataObject[] SDO对象数组
  1. 抛出异常说明 删除出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:在CUST表中删除多条记录。

  • 场景描述 用户维护CUST表,根据记录主键批量删除多条CUST记录,并保证删除操作在一个事务里完成。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObjects DataObject[] custes 变量 传引用
  • 参数描述

    • 第一个参数为数据源名称,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO对象数组custes
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <custes __id="1" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="2" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">2</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_2</CUSTCODE>
                <CUSTNAME/>
                <BIRTH/>
                <SEX/>
                <ADDRESS/>
                <PHOTO/>
            </__entry>
            <__entry __id="3" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">3</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_3</CUSTCODE>
                <CUSTNAME/>
                <BIRTH/>
                <SEX/>
                <ADDRESS/>
                <PHOTO/>
            </__entry>
        </custes>
    </__root>
</bizContext>
  • 等效的SQL语句
delete from CUST where CUSTID=2 and CUSTCODE='cust_2'
delete from CUST where CUSTID=3 and CUSTCODE='cust_3'
  • 调用后的bizContext 同调用前。

# expandEntitiesRelation:扩展一个数据实体数组中每个实体对象的一个关联属性

# 【功能说明】

扩展一个数据实体数组中每个实体对象的一个关联属性(如对一个懒加载的属性),会进行数据库的查询。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.expandEntitesRelation,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObjects DataObject[] SDO对象
参数 property String 属性名
  1. 抛出异常说明 如果属性名对应的不是一个关联属性,则抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:对O_OPERATOR表的多条记录的O_OPERATORS关联属性进行扩展查询。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObjects DataObject[] expandOrgs 变量 传引用
参数 property String O_OPERATORS 常量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是一个扩展的查询实体数组
    • 第三个参数是扩展实体中的一个属性
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <expandOrgs __id="1" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="2" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
                <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
                <PARENT_ORG_ID/>
                <ORG_NAME/>
                <ORG_CODE/>
                <ORG_ADDRESS/>
                <ORG_SEQ/>
                <O_OPERATORS __collection="list"/>
            </__entry>
            <__entry __id="3" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
                <ORG_ID __type="java:java.lang.Long">2</ORG_ID>
                <PARENT_ORG_ID/>
                <ORG_NAME/>
                <ORG_CODE/>
                <ORG_ADDRESS/>
                <ORG_SEQ/>
                <O_OPERATORS __collection="list"/>
            </__entry>
        </expandOrgs>
    </__root>
</bizContext>
  • 等效的SQL语句
select ORG_ID, OPERATOR_ID, USER_ID, USER_NAME, BIRTHDAY, GENDER, POSTCODE, ADDRESS, PHONE, EMAIL, MEMO
 from O_OPERATOR where ORG_ID=1
select ORG_ID, OPERATOR_ID, USER_ID, USER_NAME, BIRTHDAY, GENDER, POSTCODE, ADDRESS, PHONE, EMAIL, MEMO
 from O_OPERATOR where ORG_ID=2
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <expandOrgs __id="1" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="2" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
                <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
                <PARENT_ORG_ID/>
                <ORG_NAME/>
                <ORG_CODE/>
                <ORG_ADDRESS/>
                <ORG_SEQ/>
                <O_OPERATORS __id="4" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                    <__entry __id="6" __index="0" __type="sdo:com.primeton.eos.foundation.example.data
                      .O_OPERATOR">
                        <OPERATOR_ID __type="java:java.lang.Long">1</OPERATOR_ID>
                        <USER_ID __isNullOrEmpty="null"/>
                        <USER_NAME __type="java:java.lang.String">opeartor_1</USER_NAME>
                        <BIRTHDAY __isNullOrEmpty="null"/>
                        <GENDER __isNullOrEmpty="null"/>
                        <POSTCODE __isNullOrEmpty="null"/>
                        <ADDRESS __isNullOrEmpty="null"/>
                        <PHONE __isNullOrEmpty="null"/>
                        <EMAIL __isNullOrEmpty="null"/>
                        <MEMO __isNullOrEmpty="null"/>
                        <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
                    </__entry>
                    <__entry __id="7" __index="1" __type="sdo:com.primeton.eos.foundation.example.data
                      .O_OPERATOR">
                        <OPERATOR_ID __type="java:java.lang.Long">2</OPERATOR_ID>
                        <USER_ID __isNullOrEmpty="null"/>
                        <USER_NAME __type="java:java.lang.String">opeartor_2</USER_NAME>
                        <BIRTHDAY __isNullOrEmpty="null"/>
                        <GENDER __isNullOrEmpty="null"/>
                        <POSTCODE __isNullOrEmpty="null"/>
                        <ADDRESS __isNullOrEmpty="null"/>
                        <PHONE __isNullOrEmpty="null"/>
                        <EMAIL __isNullOrEmpty="null"/>
                        <MEMO __isNullOrEmpty="null"/>
                        <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
                    </__entry>
                </O_OPERATORS>
            </__entry>
            <__entry __id="3" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
                <ORG_ID __type="java:java.lang.Long">2</ORG_ID>
                <PARENT_ORG_ID/>
                <ORG_NAME/>
                <ORG_CODE/>
                <ORG_ADDRESS/>
                <ORG_SEQ/>
                <O_OPERATORS __id="5" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                    <__entry __id="8" __index="0" __type="sdo:com.primeton.eos.foundation.example.data
                      .O_OPERATOR">
                        <OPERATOR_ID __type="java:java.lang.Long">3</OPERATOR_ID>
                        <USER_ID __isNullOrEmpty="null"/>
                        <USER_NAME __type="java:java.lang.String">opeartor_3</USER_NAME>
                        <BIRTHDAY __isNullOrEmpty="null"/>
                        <GENDER __isNullOrEmpty="null"/>
                        <POSTCODE __isNullOrEmpty="null"/>
                        <ADDRESS __isNullOrEmpty="null"/>
                        <PHONE __isNullOrEmpty="null"/>
                        <EMAIL __isNullOrEmpty="null"/>
                        <MEMO __isNullOrEmpty="null"/>
                        <ORG_ID __type="java:java.lang.Long">2</ORG_ID>
                    </__entry>
                </O_OPERATORS>
            </__entry>
        </expandOrgs>
    </__root>
</bizContext>

# expandEntity:根据主键扩展查询一条记录

# 【功能说明】

根据主键扩展查询一条记录,如果dataobject中有非主键的属性值,将根据主键查询出来覆盖原来的属性。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.expandEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象
返回值 out0 int 0:无记录;1:有记录
  1. 抛出异常说明 查询出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 如果要查询的entity中的主键没有赋值,在单主键下抛异常,多主键下返回空结果。

# 【参考案例】

示例:根据主键对CUST表进行扩展查询。

  • 场景描述 用户根据查询条件实体进行查询CUST表,查询操作根据主键进行查询,查询出的结果覆盖其他非主键属性。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject expandCust 变量 传引用
返回值 out0 int result 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询数据实体
    • 返回值是否查到记录
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <expandCust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">1</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_1</CUSTCODE>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </expandCust>
    </__root>
</bizContext>
  • 等效的SQL语句
select CUSTID, CUSTCODE, CUSTNAME, BIRTH, SEX, ADDRESS from CUST where CUSTID=1 and CUSTCODE='cust_1';
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <expandCust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">1</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_1</CUSTCODE>
            <CUSTNAME __type="java:java.lang.String">cust_1</CUSTNAME>
            <BIRTH __type="java:java.sql.Date">2009-09-12</BIRTH>
            <SEX __type="java:java.lang.String">1</SEX>
            <ADDRESS __isNullOrEmpty="null"/>
            <PHOTO __isNullOrEmpty="null"/>
        </expandCust>
        <result __type="java:java.lang.Integer">1</result>
    </__root>
</bizContext>

# expandEntityByCriteriaEntity:根据查询条件实体的查询结果扩展一个实体

# 【功能说明】

如果查询出来有一条记录,返回1,并使用查询出来的结果扩展要扩展的实体; 如果没有查询出来记录,返回0,不操作要扩展的实体; 如果查询出来多条记录,返回-1,并使用查询出来的第一个结果扩展要扩展的实体。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.expandEntityByCriteriaEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 criteriaEntity DataObject 查询条件实体
参数 dataObject DataObject 要扩展的实体
返回值 out0 int 满足查询条件的记录数
  1. 抛出异常说明 插入出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:根据条件扩展一个CUST实体。

  • 场景描述 根据条件扩展一个CUST实体。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 criteriaEntity DataObject criteria 变量 传引用
参数 dataObject DataObject entity 变量 传引用
返回值 out0 int count 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是第二个参数是查询实体criteria
    • 第三个参数是要扩展的实体
    • 第四个参数是满足查询模板条件的记录数
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteria __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity
__type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
            <_expr __collection="list" __collectionid="3" __id="4" __index="0"
__type="sdo:com.primeton.das.criteria.exprType">
                <_op/>
                <_min/>
                <_max/>
                <_likeRule/>
                <_dateRule/>
                <_pattern/>
                <_year/>
                <_quarter/>
                <_month/>
                <_opProperty/>
                <_ref/>
                <_processNullValue/>
                <_property/>
                <_value/>
                <CUSTID __type="java:java.lang.Integer">2</CUSTID>
            </_expr>
        </criteria>
        <entity __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </entity>
    </__root>
</bizContext>
  • 等效的SQL语句
select * from CUST where CUSTID = 2
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <count __type="java:java.lang.Integer">1</count>
        <criteria __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity
__type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
            <_expr __collection="list" __collectionid="3" __id="4" __index="0"
__type="sdo:com.primeton.das.criteria.exprType">
                <_op/>
                <_min/>
                <_max/>
                <_likeRule/>
                <_dateRule/>
                <_pattern/>
                <_year/>
                <_quarter/>
                <_month/>
                <_opProperty/>
                <_ref/>
                <_processNullValue/>
                <_property/>
                <_value/>
                <CUSTID __type="java:java.lang.Integer">2</CUSTID>
            </_expr>
        </criteria>
        <entity __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">2</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_2</CUSTCODE>
            <CUSTNAME __type="java:java.lang.String">cust_2</CUSTNAME>
            <BIRTH __type="java:java.sql.Date">2009-09-09</BIRTH>
            <SEX __isNullOrEmpty="null"/>
            <ADDRESS __isNullOrEmpty="null"/>
            <PHOTO __isNullOrEmpty="null"/>
        </entity>
    </__root>
</bizContext>

# expandEntityByTemplate:根据查询模板的查询结果扩展一个实体

# 【功能说明】

如果查询出来有一条记录,返回1,并使用查询出来的结果扩展要扩展的实体; 如果没有查询出来记录,返回0,不操作要扩展的实体; 如果查询出来多条记录,返回-1,并使用查询出来的第一个结果扩展要扩展的实体。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.expandEntityByTemplate,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 template DataObject 查询模板
参数 dataObject DataObject 要扩展的实体
返回值 out0 int 满足查询模板条件的记录数
  1. 抛出异常说明 插入出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:根据条件扩展一个CUST实体。

  • 场景描述 根据条件扩展一个CUST实体。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 template DataObject template 变量 传引用
参数 dataObject DataObject entity 变量 传引用
返回值 out0 int count 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO数据模板,这里作为查询条件的数据模板
    • 第三个参数是要扩展的实体
    • 第四个参数是满足查询模板条件的记录数
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <entity __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </entity>
        <template __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">2</CUSTID>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>
  • 等效的SQL语句
select * from CUST where CUSTID = 2
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <count __type="java:java.lang.Integer">1</count>
        <entity __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">2</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_2</CUSTCODE>
            <CUSTNAME __type="java:java.lang.String">cust_2</CUSTNAME>
            <BIRTH __type="java:java.sql.Date">2009-09-09</BIRTH>
            <SEX __isNullOrEmpty="null"/>
            <ADDRESS __isNullOrEmpty="null"/>
            <PHOTO __isNullOrEmpty="null"/>
        </entity>
        <template __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">2</CUSTID>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>

# expandEntityWithLock:根据主键扩展记录并锁定

# 【功能说明】

根据主键扩展记录,并为当前记录添加事务锁。如果dataobject中有非主键的属性值,将根据主键查询出来覆盖原来的属性。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.expandEntityWithLock,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象
  1. 抛出异常说明 查询出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:扩展查询CUST表并添加行锁。

  • 场景描述 用户维护CUST表,根据主键CUSTID查询一个记录并为该记录添加事务锁。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject expandCust 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询实体对象,查询条件中必须包含主键属性
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <expandCust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">1</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_1</CUSTCODE>
            <CUSTNAME/>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </expandCust>
    </__root>
</bizContext>
  • 等效的SQL语句
select CUSTID, CUSTCODE, CUSTNAME, BIRTH, SEX, ADDRESS from CUST where CUSTID=1 and CUSTCODE='cust_1'
 for update;
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <expandCust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">1</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_1</CUSTCODE>
            <CUSTNAME __type="java:java.lang.String">cust_1</CUSTNAME>
            <BIRTH __type="java:java.sql.Date">2009-09-12</BIRTH>
            <SEX __type="java:java.lang.String">1</SEX>
            <ADDRESS __isNullOrEmpty="null"/>
            <PHOTO __isNullOrEmpty="null"/>
        </expandCust>
    </__root>
</bizContext>

# expandLobProperty:获取实体的lob属性对应的值

# 【功能说明】

从数据库中查询取得的实体,如果有lob字段,而且是懒加载模式,则lob字段的值是不可见的,调用此方法,可以获取实体的lob属性对应的值。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.expandLobProperty,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 entity DataObject 实体
参数 lobPropertyNames String lob属性的名称,多个名称之间用","分割。
  1. 规则说明 无。

# 【参考案例】

示例:取得FIFE表的FILE(BLOB类型)属性值。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 entity DataObject fileList[1] 变量 传引用
参数 lobPropertyNames String FILE 常量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是取得一个数据实体
    • 第三个参数是lob属性的名称
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <file __id="1" __type="sdo:foundation.database.DatabaseUtil.lob.FILE">
            <ID/>
            <NAME/>
            <FILE/>
        </file>
        <fileList __id="2" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="3" __index="0" __type="sdo:foundation
              .database.DatabaseUtil.lob.FILE">
                <ID __type="java:java.math.BigDecimal">123</ID>
                <NAME __type="java:java.lang.String">公司</NAME>
                <FILE/>
            </__entry>
        </fileList>
    </__root>
</bizContext>
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <file __id="1" __type="sdo:foundation.database.DatabaseUtil.lob.FILE">
            <ID/>
            <NAME/>
            <FILE/>
        </file>
        <fileList __id="2" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="3" __index="0" __type="sdo:foundation
              .database.DatabaseUtil.lob.FILE">
                <ID __type="java:java.math.BigDecimal">123</ID>
                <NAME __type="java:java.lang.String">公司</NAME>
                <FILE __collection="array" __hexString="true" __id="4" __type="java:byte">C4E3BAC3A3A1</FILE>
            </__entry>
        </fileList>
    </__root>
</bizContext>

# expandRelation:扩展一个数据实体对象的一个关联属性

# 【功能说明】

扩展一个数据实体对象的一个关联属性(如对一个懒加载的属性),会进行数据库的查询。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.expandRelation,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象
参数 property String 关联属性名
  1. 抛出异常说明 如果属性名对应的不是一个关联属性,则抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:由于实际业务中有可能根据性能要求,考虑把某个实体的复杂属性进行延时加载。此时就可以使用expandRelation进行二次扩展查询。数据实体之间是单向1:n关联关系。实体关系如下图所示。 img

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject expandOrg 变量 传引用
参数 property String O_OPERATORS 常量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询实体对象
    • 第三个参数是查询数据实体扩展的一个属性实体对象
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <expandOrg __id="1" __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
            <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
            <PARENT_ORG_ID/>
            <ORG_NAME/>
            <ORG_CODE/>
            <ORG_ADDRESS/>
            <ORG_SEQ/>
            <O_OPERATORS __collection="list"/>
        </expandOrg>
    </__root>
</bizContext>
  • 等效的SQL语句
select ORG_ID, OPERATOR_ID, USER_ID, USER_NAME, BIRTHDAY, GENDER, POSTCODE, ADDRESS, PHONE, EMAIL, MEMO
 from O_OPERATOR where ORG_ID=1
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <expandOrg __id="1" __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
            <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
            <PARENT_ORG_ID/>
            <ORG_NAME/>
            <ORG_CODE/>
            <ORG_ADDRESS/>
            <ORG_SEQ/>
            <O_OPERATORS __id="2" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="3" __index="0" __type="sdo:com.primeton.eos.foundation.example.data.O_OPERATOR">
                    <OPERATOR_ID __type="java:java.lang.Long">1</OPERATOR_ID>
                    <USER_ID __isNullOrEmpty="null"/>
                    <USER_NAME __type="java:java.lang.String">opeartor_1</USER_NAME>
                    <BIRTHDAY __isNullOrEmpty="null"/>
                    <GENDER __isNullOrEmpty="null"/>
                    <POSTCODE __isNullOrEmpty="null"/>
                    <ADDRESS __isNullOrEmpty="null"/>
                    <PHONE __isNullOrEmpty="null"/>
                    <EMAIL __isNullOrEmpty="null"/>
                    <MEMO __isNullOrEmpty="null"/>
                    <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
                </__entry>
                <__entry __id="4" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.O_OPERATOR">
                    <OPERATOR_ID __type="java:java.lang.Long">2</OPERATOR_ID>
                    <USER_ID __isNullOrEmpty="null"/>
                    <USER_NAME __type="java:java.lang.String">opeartor_2</USER_NAME>
                    <BIRTHDAY __isNullOrEmpty="null"/>
                    <GENDER __isNullOrEmpty="null"/>
                    <POSTCODE __isNullOrEmpty="null"/>
                    <ADDRESS __isNullOrEmpty="null"/>
                    <PHONE __isNullOrEmpty="null"/>
                    <EMAIL __isNullOrEmpty="null"/>
                    <MEMO __isNullOrEmpty="null"/>
                    <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
                </__entry>
            </O_OPERATORS>
        </expandOrg>
    </__root>
</bizContext>

# getRelationEntities:根据数据实体对象的关联属性获得关联实体对象数组

# 【功能说明】

根据数据实体对象的关联属性获得关联实体对象数组,返回关联实体对象如果是多对一或一对一关联关系时,将关联的实体对象构造为数组返回;如果是一对多关联关系时,返回关联的实体对象数组。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.getRelationEntities,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象
参数 property String 属性名
返回值 out0 DataObject[] 关联实体对象数组
  1. 抛出异常说明 如果属性名对应的不是一个关联属性,则抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:根据组织信息查询属于该组织的所有操作员信息。实体关系图如下:

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject org 变量 传引用
参数 property String O_OPERATORS 变量 传引用
返回值 out0 DataObject[] result 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询实体对象
    • 第三个参数是扩展实体中的一个属性名称
    • 返回值是查询实体关联查询结果实体对象数组
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <org __id="1" __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
            <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
            <PARENT_ORG_ID/>
            <ORG_NAME/>
            <ORG_CODE/>
            <ORG_ADDRESS/>
            <ORG_SEQ/>
            <O_OPERATORS __collection="list"/>
        </org>
    </__root>
</bizContext>
  • 等效的SQL语句
select ORG_ID, OPERATOR_ID, USER_ID, USER_NAME, BIRTHDAY, GENDER, POSTCODE, ADDRESS, PHONE, EMAIL, MEMO
 from O_OPERATOR where ORG_ID=1
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <org __id="1" __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
            <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
            <PARENT_ORG_ID/>
            <ORG_NAME/>
            <ORG_CODE/>
            <ORG_ADDRESS/>
            <ORG_SEQ/>
            <O_OPERATORS __id="3" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __index="0" __refid="4"/>
                <__entry __index="1" __refid="5"/>
            </O_OPERATORS>
        </org>
        <result __id="2" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="4" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.O_OPERATOR">
                <OPERATOR_ID __type="java:java.lang.Long">1</OPERATOR_ID>
                <USER_ID __isNullOrEmpty="null"/>
                <USER_NAME __type="java:java.lang.String">opeartor_1</USER_NAME>
                <BIRTHDAY __isNullOrEmpty="null"/>
                <GENDER __isNullOrEmpty="null"/>
                <POSTCODE __isNullOrEmpty="null"/>
                <ADDRESS __isNullOrEmpty="null"/>
                <PHONE __isNullOrEmpty="null"/>
                <EMAIL __isNullOrEmpty="null"/>
                <MEMO __isNullOrEmpty="null"/>
                <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
            </__entry>
            <__entry __id="5" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.O_OPERATOR">
                <OPERATOR_ID __type="java:java.lang.Long">2</OPERATOR_ID>
                <USER_ID __isNullOrEmpty="null"/>
                <USER_NAME __type="java:java.lang.String">opeartor_2</USER_NAME>
                <BIRTHDAY __isNullOrEmpty="null"/>
                <GENDER __isNullOrEmpty="null"/>
                <POSTCODE __isNullOrEmpty="null"/>
                <ADDRESS __isNullOrEmpty="null"/>
                <PHONE __isNullOrEmpty="null"/>
                <EMAIL __isNullOrEmpty="null"/>
                <MEMO __isNullOrEmpty="null"/>
                <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
            </__entry>
        </result>
    </__root>
</bizContext>

# getRelationEntity:根据数据实体对象的关联属性获得关联实体对象

# 【功能说明】

根据数据实体对象的关联属性获得关联实体对象,返回关联实体对象如果是多对一或一对一关联关系时,返回关联的实体对象;如果是一对多关联关系时,返回关联的实体对象的第一个对象值。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.getRelationEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象
参数 property String 关联属性名
返回值 out0 DataObject 关联实体对象
  1. 抛出异常说明 如果属性名对应的不是一个关联属性,则抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:本案例用来根据某一ORG信息获取对应的第一个OPERATOR的信息。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject org 变量 传引用
参数 property String O_OPERATORS 变量 传引用
返回值 out0 DataObject result 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是一个扩展的查询实体
    • 第三个参数是扩展实体中的一个属性
    • 返回值是查询实体关联查询结果实体
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <org __id="1" __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
            <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
            <PARENT_ORG_ID/>
            <ORG_NAME/>
            <ORG_CODE/>
            <ORG_ADDRESS/>
            <ORG_SEQ/>
            <O_OPERATORS __collection="list"/>
        </org>
    </__root>
</bizContext>
  • 等效的SQL语句
select ORG_ID, OPERATOR_ID, USER_ID, USER_NAME, BIRTHDAY, GENDER, POSTCODE, ADDRESS, PHONE, EMAIL, MEMO
 from O_OPERATOR where ORG_ID=1
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <org __id="1" __type="sdo:com.primeton.eos.foundation.example.data.O_ORG">
            <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
            <PARENT_ORG_ID/>
            <ORG_NAME/>
            <ORG_CODE/>
            <ORG_ADDRESS/>
            <ORG_SEQ/>
            <O_OPERATORS __id="3" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __index="0" __refid="2"/>
                <__entry __id="4" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.O_OPERATOR">
                    <OPERATOR_ID __type="java:java.lang.Long">2</OPERATOR_ID>
                    <USER_ID __isNullOrEmpty="null"/>
                    <USER_NAME __type="java:java.lang.String">opeartor_2</USER_NAME>
                    <BIRTHDAY __isNullOrEmpty="null"/>
                    <GENDER __isNullOrEmpty="null"/>
                    <POSTCODE __isNullOrEmpty="null"/>
                    <ADDRESS __isNullOrEmpty="null"/>
                    <PHONE __isNullOrEmpty="null"/>
                    <EMAIL __isNullOrEmpty="null"/>
                    <MEMO __isNullOrEmpty="null"/>
                    <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
                </__entry>
            </O_OPERATORS>
        </org>
        <result __id="2" __type="sdo:com.primeton.eos.foundation.example.data.O_OPERATOR">
            <OPERATOR_ID __type="java:java.lang.Long">1</OPERATOR_ID>
            <USER_ID __isNullOrEmpty="null"/>
            <USER_NAME __type="java:java.lang.String">opeartor_1</USER_NAME>
            <BIRTHDAY __isNullOrEmpty="null"/>
            <GENDER __isNullOrEmpty="null"/>
            <POSTCODE __isNullOrEmpty="null"/>
            <ADDRESS __isNullOrEmpty="null"/>
            <PHONE __isNullOrEmpty="null"/>
            <EMAIL __isNullOrEmpty="null"/>
            <MEMO __isNullOrEmpty="null"/>
            <ORG_ID __type="java:java.lang.Long">1</ORG_ID>
        </result>
    </__root>
</bizContext>

# insertEntity:插入一条记录

# 【功能说明】

用来把一个SDO对象的值保存到数据库相应的实体表中。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.insertEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象
  1. 抛出异常说明 插入出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:在CUST表中新增一条记录。

  • 场景描述 用户新增一条CUST记录。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject cust 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO对象数据实体cust
  • 其他说明

    无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <cust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">1</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_1</CUSTCODE>
            <CUSTNAME __type="java:java.lang.String">cust_1</CUSTNAME>
            <BIRTH __type="java:java.util.Date">2009-09-12 00:00:00</BIRTH>
            <SEX __type="java:java.lang.String">1</SEX>
            <ADDRESS/>
            <PHOTO/>
        </cust>
    </__root>
</bizContext>
  • 等效的SQL语句
insert into CUST (CUSTNAME, BIRTH, SEX, CUSTID, CUSTCODE) values ('cust_1', to_date('2009-09-12','yyyy-MM-dd'),
                                                                  '1', 1, 'cust_1')
  • 调用后的bizContext 同调用前。

    # insertEntityBatch:插入多条记录

# 【功能说明】

用来把一个SDO对象数组的值保存到数据库相应的实体表中,所有操作隶属于一个原子事务。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.insertEntityBatch,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObjects DataObject[] SDO数组
  1. 抛出异常说明 插入出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:在CUST表中新增多条记录。

  • 场景描述 用户使用Datacell维护CUST表的内容。用户操作新增多条CUST数据。该场景下可以用insertEntityBatch实现多条记录的插入。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObjects DataObject[] custes 变量 传引用
  • 参数描述

    • 第一个参数为数据源名称,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO对象数组custes
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <custes __id="1" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="2" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">2</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_2</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_2</CUSTNAME>
                <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
                <SEX/>
                <ADDRESS/>
                <PHOTO/>
            </__entry>
            <__entry __id="3" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">3</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_3</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_3</CUSTNAME>
                <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
                <SEX/>
                <ADDRESS/>
                <PHOTO/>
            </__entry>
        </custes>
    </__root>
</bizContext>
  • 等效的SQL语句
insert into CUST (CUSTNAME, BIRTH, CUSTID, CUSTCODE) values ('cust_2', to_date('2009-09-09','yyyy-MM-dd'),
                                                                   2, 'cust_2');
insert into CUST (CUSTNAME, BIRTH, CUSTID, CUSTCODE) values ('cust_3', to_date('2009-09-09','yyyy-MM-dd'),
                                                                   3, 'cust_3');
  • 调用后的bizContext 同调用前。

# queryEntitiesByCriteriaEntity:根据查询条件实体查询所有记录

# 【功能说明】

根据查询条件实体查询所有记录,根据查询条件实体指定查询Entity的字段。如果实体包含关联实体,并且关联关系连线上没有设置为延时加载,那么同时也会把关联实体的数据查询出来。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.queryEntitiesByCriteriaEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 criteriaEntity DataObject 查询条件实体
返回值 out0 DataObject[] 符合查询条件的所有结果
  1. 抛出异常说明 查询出错时抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 关于查询条件实体的说明请参考《EOS基础参考手册》中的"数据服务\CriteriaEntity"。

# 【参考案例】

示例:利用查询实体查询CUST表所有数据。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 criteriaEntity DataObject criteria 变量 传引用
返回值 out0 DataObject[] result 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询实体criteria
    • 返回值是根据查询实体查询得到的结果数组对象
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteria __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __id="2" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="3" __index="0" __type="sdo:com.primeton.das.criteria.exprType">
                    <_op __type="java:java.lang.String">in</_op>
                    <_min/>
                    <_max/>
                    <_likeRule/>
                    <_dateRule/>
                    <_pattern/>
                    <_year/>
                    <_quarter/>
                    <_month/>
                    <_opProperty/>
                    <_ref/>
                    <_processNullValue/>
                    <CUSTID __type="java:java.lang.String">2,3</CUSTID>
                </__entry>
            </_expr>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteria>
    </__root>
</bizContext>
  • 等效的SQL语句
select CUSTID, CUSTCODE, CUSTNAME, BIRTH, SEX, ADDRESS from CUST where CUSTID in (2,3)
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteria __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __id="3" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="6" __index="0" __type="sdo:com.primeton.das.criteria.exprType">
                    <_op __type="java:java.lang.String">in</_op>
                    <_min/>
                    <_max/>
                    <_likeRule/>
                    <_dateRule/>
                    <_pattern/>
                    <_year/>
                    <_quarter/>
                    <_month/>
                    <_opProperty/>
                    <_ref/>
                    <_processNullValue/>
                    <CUSTID __type="java:java.lang.String">2,3</CUSTID>
                </__entry>
            </_expr>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteria>
        <result __id="2" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="4" __index="0" __type="sdo:com
              .primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">2</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_2</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_2</CUSTNAME>
                <BIRTH __type="java:java.sql.Date">2009-09-09</BIRTH>
                <SEX __isNullOrEmpty="null"/>
                <ADDRESS __isNullOrEmpty="null"/>
                <PHOTO/>
            </__entry>
            <__entry __id="5" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">3</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_3</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_3</CUSTNAME>
                <BIRTH __type="java:java.sql.Date">2009-09-09</BIRTH>
                <SEX __isNullOrEmpty="null"/>
                <ADDRESS __isNullOrEmpty="null"/>
                <PHOTO/>
            </__entry>
        </result>
    </__root>
</bizContext>

# queryEntitiesByCriteriaEntity:根据查询条件实体查询部分记录

# 【功能说明】

根据查询条件实体查询指定起始行、指定长度的记录,根据查询条件实体指定查询Entity的字段。如果实体包含关联实体,并且关联关系连线上没有设置为延时加载,那么同时也会把关联实体的数据查询出来。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.queryEntitiesByCriteriaEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 criteriaEntity DataObject 查询条件实体
参数 begin int 开始记录编号(从0开始)
参数 length int 查询记录数量
返回值 out0 DataObject[] 符合查询条件的所有结果
  1. 抛出异常说明 查询出错时抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 关于查询条件实体的说明请参考《EOS基础参考手册》中的"数据服务\CriteriaEntity"。

# 【参考案例】

示例:从第1行开始查询CUST表一条记录。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 criteriaEntity DataObject criteria 变量 传引用
参数 begin int 1 常量 传引用
参数 length int 1 常量 传引用
返回值 out0 DataObject[] result 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是查询实体criteria
    • 第三个参数是查询起始行标志
    • 第四个参数是查询记录的长度(记录数)
    • 返回值是根据查询实体查询得到的结果数组对象
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteria __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __id="2" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="3" __index="0" __type="sdo:com.primeton.das.criteria.exprType">
                    <_op __type="java:java.lang.String">in</_op>
                    <_min/>
                    <_max/>
                    <_likeRule/>
                    <_dateRule/>
                    <_pattern/>
                    <_year/>
                    <_quarter/>
                    <_month/>
                    <_opProperty/>
                    <_ref/>
                    <_processNullValue/>
                    <CUSTID __type="java:java.lang.String">2,3</CUSTID>
                </__entry>
            </_expr>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteria>
    </__root>
</bizContext>
  • 等效的SQL语句
select * from
  ( select row_.*, rownum rownum_ from
      ( select CUSTID, CUSTCODE, CUSTNAME, BIRTH, SEX, ADDRESS from CUST where CUSTID in (2,3) ) row_
    where rownum <= 2
  )
where rownum_ > 1
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteria __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __id="3" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="5" __index="0" __type="sdo:com.primeton.das.criteria.exprType">
                    <_op __type="java:java.lang.String">in</_op>
                    <_min/>
                    <_max/>
                    <_likeRule/>
                    <_dateRule/>
                    <_pattern/>
                    <_year/>
                    <_quarter/>
                    <_month/>
                    <_opProperty/>
                    <_ref/>
                    <_processNullValue/>
                    <CUSTID __type="java:java.lang.String">2,3</CUSTID>
                </__entry>
            </_expr>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteria>
        <result __id="2" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="4" __index="0" __type="sdo:com
              .primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">3</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_3</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_3</CUSTNAME>
                <BIRTH __type="java:java.sql.Date">2009-09-09</BIRTH>
                <SEX __isNullOrEmpty="null"/>
                <ADDRESS __isNullOrEmpty="null"/>
                <PHOTO/>
            </__entry>
        </result>
    </__root>
</bizContext>

# queryEntitiesByTemplate:根据SDO数据模板查询条件查询所有记录

# 【功能说明】

根据SDO数据模板查询条件查询所有记录,会查询Entity的所有字段。如果实体包含关联实体,并且关联关系连线上没有设置为延时加载,那么同时也会把关联实体的数据查询出来。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.queryEntitiesByTemplate,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 template DataObject SDO数据模板查询条件
返回值 out0 DataObject[] 查询结果SDO数组
  1. 抛出异常说明 查询出错时抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:利用查询模板查询所有的客户信息。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 template DataObject template 变量 传引用
返回值 out0 DataObject[] result 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO数据模板,这里作为查询条件的数据模板
    • 返回值是根据数据模板查询条件查询出的记录
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <template __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>
  • 等效的SQL语句
select CUSTID, CUSTCODE, CUSTNAME, BIRTH, SEX, ADDRESS from CUST where BIRTH=
  to_date('2009-09-09','yyyy-MM-dd')
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <result __id="1" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="3" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">2</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_2</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_2</CUSTNAME>
                <BIRTH __type="java:java.sql.Date">2009-09-09</BIRTH>
                <SEX __isNullOrEmpty="null"/>
                <ADDRESS __isNullOrEmpty="null"/>
                <PHOTO/>
            </__entry>
            <__entry __id="4" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">3</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_3</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_3</CUSTNAME>
                <BIRTH __type="java:java.sql.Date">2009-09-09</BIRTH>
                <SEX __isNullOrEmpty="null"/>
                <ADDRESS __isNullOrEmpty="null"/>
                <PHOTO/>
            </__entry>
        </result>
        <template __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>

# queryEntitiesByTemplate:根据SDO数据模板查询条件查询部分记录

# 【功能说明】

根据SDO数据模板查询指定起始行、指定长度的记录。如果实体包含关联实体,并且关联关系连线上没有设置为延时加载,那么同时也会把关联实体的数据查询出来。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.queryEntitiesByTemplate,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 template DataObject SDO数据模板查询条件
参数 begin int 开始记录编号(从0开始)
参数 length Int length查询记录数量
返回值 out0 DataObject[] 符合查询模板的所有结果
  1. 抛出异常说明 查询出错时抛出异常com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:从第1行开始查询CUST表1条记录。

  • 参数设置
类型 名称 数据类型 值类 传递方式
参数 dsName String default 常量 传引用
参数 template DataObject cust 变量 传引用
参数 begin int 1 常量 传引用
参数 length Int 1 常量 传引用
返回值 out0 DataObject[] custs 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO数据模板,这里作为查询条件的数据模板
    • 第三个参数是查询条件起始行
    • 第四个参数是查询条件的查询长度(记录数)
    • 返回值是根据数据模板查询条件查询出的对象数组
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <template __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>
  • 等效的SQL语句 以oracle为例:
select *
  from (select row_.*, rownum rownum_
          from (select CUSTID, CUSTCODE, CUSTNAME, BIRTH, SEX, ADDRESS
                  from CUST
                 where BIRTH = to_date('2009-09-09', 'yyyy-MM-dd')) row_
         where rownum <= 2)
 where rownum_ > 1
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <result __id="1" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="3" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">3</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_3</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_3</CUSTNAME>
                <BIRTH __type="java:java.sql.Date">2009-09-09</BIRTH>
                <SEX __isNullOrEmpty="null"/>
                <ADDRESS __isNullOrEmpty="null"/>
                <PHOTO/>
            </__entry>
        </result>
        <template __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
    </__root>
</bizContext>

# saveEntities:保存多条记录

# 【功能说明】

用来把一组SDO对象保存到数据库中,所有操作隶属于一个原子事务。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.saveEntities,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObjects DataObject[] SDO对象数组
  1. 抛出异常说明 保存出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:保存CUST表的多条记录。

  • 场景描述 用户保存多条CUST记录,若被添加记录主键在表中存在则执行更新操作,若不存在则执行新增操作。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObjects DataObject[] custes 变量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO对象数组custes
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <custes __id="1" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="2" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">5</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_5</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_5</CUSTNAME>
                <BIRTH __type="java:java.util.Date">2009-10-02 00:00:00</BIRTH>
                <SEX/>
                <ADDRESS/>
                <PHOTO/>
            </__entry>
            <__entry __id="3" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">6</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_6</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">cust_6</CUSTNAME>
                <BIRTH __type="java:java.util.Date">2009-10-13 00:00:00</BIRTH>
                <SEX/>
                <ADDRESS/>
                <PHOTO/>
            </__entry>
        </custes>
    </__root>
</bizContext>
  • 等效的SQL语句

    此处只列出同时存在和同时不存在的sql。

    • 同时存在:
update CUST set CUSTNAME='cust_5', BIRTH=to_date('2009-10-12','yyyy-MM-dd')
where CUSTID=5 and CUSTCODE='cust_5'
update CUST set CUSTNAME='cust_6', BIRTH=to_date('2009-10-13','yyyy-MM-dd')
where CUSTID=6 and CUSTCODE='cust_6'
  • 同时不存在:
insert into CUST (CUSTNAME, BIRTH, CUSTID, CUSTCODE) values ('cust_5',
                         to_date('2009-10-12','yyyy-MM-dd'), 5, 'cust_5')
insert into CUST (CUSTNAME, BIRTH, CUSTID, CUSTCODE) values ('cust_6',
                         to_date('2009-10-13','yyyy-MM-dd'), 6, 'cust_6')
  • 调用后的bizContext 同调用前。

# saveEntity:保存一条记录

# 【功能说明】

用来保存一条记录到数据库。该构件与inserEntity有所不同:如果数据库没有相同主键的记录则直接插入到数据库对应的表中,否则只是修改已经存在的相同主键的记录的数据。可以简单理解为,它既可用于insert场景,也可用于update场景。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.saveEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象
  1. 抛出异常说明 保存出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:保存CUST表的一条记录。

  • 场景描述 用户保存一条CUST记录,如果新增记录主键在表中存在则执行修改操作,如果不存在则执行新增操作。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject cust 变量 传引用
  • 参数描述

  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <cust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">4</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_4</CUSTCODE>
            <CUSTNAME __type="java:java.lang.String">cust_4</CUSTNAME>
            <BIRTH __type="java:java.util.Date">2009-10-01 00:00:00</BIRTH>
            <SEX __type="java:java.lang.String">1</SEX>
            <ADDRESS/>
            <PHOTO/>
        </cust>
    </__root>
</bizContext>
  • 等效的SQL语句

    • 存在CUSTID=4并且CUSTCODE='cust_4'的记录时:
update CUST set CUSTNAME='cust_4', SEX='1', BIRTH=to_date('2009-10-01','yyyy-MM-dd')
where CUSTID=4 and CUSTCODE='cust_4'
  • 不存在存在CUSTID=4并且CUSTCODE='cust_4'的记录时:
insert into CUST (CUSTNAME, BIRTH, SEX, CUSTID, CUSTCODE) values ('cust_4',
                         to_date('2009-10-01','yyyy-MM-dd'), '1', 4, 'cust_4')
  • 调用后的bizContext 同调用前。

# updateEntity:更新一条记录

# 【功能说明】

用来更新一条数据库记录,更新时根据实体定义的主键属性的值更新。没有主键不能更新。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.updateEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObject DataObject SDO对象
  1. 抛出异常说明 更新出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:更新CUST表中的一条记录。

  • 场景描述 用户更新一条CUST记录。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObject DataObject cust 变量 传引用
  • 参数描述

    • 第一个参数为数据源名称,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO对象实体cust
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <cust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID __type="java:java.lang.Integer">1</CUSTID>
            <CUSTCODE __type="java:java.lang.String">cust_1</CUSTCODE>
            <CUSTNAME __type="java:java.lang.String">update_cust_1</CUSTNAME>
            <BIRTH/>
            <SEX __type="java:java.lang.String">0</SEX>
            <ADDRESS/>
            <PHOTO/>
        </cust>
    </__root>
</bizContext>
  • 等效的SQL语句
update CUST set CUSTNAME='update_cust_1', SEX=0 where CUSTID=1 and CUSTCODE='cust_1'
  • 调用后的bizContext 同调用前。

# updateEntityBatch:更新多条记录

# 【功能说明】

用来更新多条数据库记录,更新时根据实体定义的主键属性的值更新。没有主键不能更新。所有操作隶属于一个原子事务。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.data.DatabaseUtil.updateEntityBatch,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 dataObjects DataObject[] SDO数组
  1. 抛出异常说明 更新出错时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:更新CUST表中的多条记录。

  • 场景描述 用户使用Datacell维护CUST表的内容。用户操作更新多条CUST数据。该场景下可以用updateEntityBatch实现多条记录的插入。

  • 参数设置

类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 dataObjects DataObject[] custes 变量 传引用
  • 参数描述

    • 第一个参数为数据源名称,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO对象数组custes
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <custes __id="1" __type="java:[Lcommonj.sdo.DataObject;">
            <__entry __componentType="java:commonj.sdo.DataObject" __id="2" __index="0"
             __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">2</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_2</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">update_cust_2</CUSTNAME>
                <BIRTH/>
                <SEX/>
                <ADDRESS/>
                <PHOTO/>
            </__entry>
            <__entry __id="3" __index="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
                <CUSTID __type="java:java.lang.Integer">3</CUSTID>
                <CUSTCODE __type="java:java.lang.String">cust_3</CUSTCODE>
                <CUSTNAME __type="java:java.lang.String">update_cust_3</CUSTNAME>
                <BIRTH/>
                <SEX/>
                <ADDRESS/>
                <PHOTO/>
            </__entry>
        </custes>
    </__root>
</bizContext>
  • 等效的SQL语句
update CUST set CUSTNAME='update_cust_2' where CUSTID=2 and CUSTCODE='cust_2'
update CUST set CUSTNAME='update_cust_3' where CUSTID=3 and CUSTCODE='cust_3'
  • 调用后的bizContext 同调用前。

# updateEntityByCriteriaEntity:根据查询实体更新记录

# 【功能说明】

根据查询实体定义把一个指定的SDO对象更新到数据库中。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.updateEntityByCriteriaEntity,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 value DataObject 数据实体值
参数 criteriaEntity DataObject 查询条件定义对象
返回值 out0 int 更新记录数
  1. 抛出异常说明 更新失败时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:根据查询条件更新CUST表中的一条记录。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 value DataObject updateData 变量 传引用
参数 criteriaEntity DataObject criteriaEntity 变量 传引用
返回值 out0 int result 常量 传引用
  • 参数描述

    • 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO数据对象
    • 第三个参数是查询实体criteriaEntity
    • 第四个参数是被修改记录返回值
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteriaEntity __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __id="3" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="4" __index="0" __type="sdo:com.primeton.das.criteria.exprType">
                    <_op __type="java:java.lang.String">=</_op>
                    <_min/>
                    <_max/>
                    <_likeRule/>
                    <_dateRule/>
                    <_pattern/>
                    <_year/>
                    <_quarter/>
                    <_month/>
                    <_opProperty/>
                    <_ref/>
                    <_processNullValue/>
                    <CUSTID __type="java:java.lang.String">3</CUSTID>
                </__entry>
            </_expr>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteriaEntity>
        <updateData __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME __type="java:java.lang.String">updateByCriteria</CUSTNAME>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </updateData>
    </__root>
</bizContext>
  • 等效的SQL语句
update CUST set CUSTNAME='updateByCriteria' where CUST.CUSTID=3
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <criteriaEntity __id="1" __type="sdo:com.primeton.das.criteria.criteriaType">
            <_entity __type="java:java.lang.String">com.primeton.eos.foundation.example.data.CUST</_entity>
            <_select/>
            <_expr __id="3" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
                <__entry __id="4" __index="0" __type="sdo:com.primeton.das.criteria.exprType">
                    <_op __type="java:java.lang.String">=</_op>
                    <_min/>
                    <_max/>
                    <_likeRule/>
                    <_dateRule/>
                    <_pattern/>
                    <_year/>
                    <_quarter/>
                    <_month/>
                    <_opProperty/>
                    <_ref/>
                    <_processNullValue/>
                    <CUSTID __type="java:java.lang.String">3</CUSTID>
                </__entry>
            </_expr>
            <_and __collection="list"/>
            <_or __collection="list"/>
            <_not __collection="list"/>
            <_order __collection="list"/>
            <_orderby __collection="list"/>
            <_group/>
            <_distinct/>
            <_association __collection="list"/>
            <_ref __collection="list"/>
            <_lock/>
        </criteriaEntity>
        <result __type="java:java.lang.Integer">1</result>
        <updateData __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME __type="java:java.lang.String">updateByCriteria</CUSTNAME>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </updateData>
    </__root>
</bizContext>

# updateEntityByTemplate:根据SDO数据模板查询条件更新记录

# 【功能说明】

根据一个SDO查询模板的数据,相应的更新数据库中某条记录。

# 【版本说明】

从EOS 6.0开始提供。

# 【引用路径】

  1. 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseUtil.updateEntityByTemplate,包含在com.eos.foundation.jar中。
  2. 运算逻辑定义在构件包com.eos.foundation中。

# 【使用说明】

  1. 参数说明
类型 名称 数据类型 参数描述
参数 dsName String 数据源名称
参数 value DataObject 实体值
参数 template DataObject 实体模板条件
返回值 out0 int 更新记录数
  1. 抛出异常说明 更新失败时抛出com.eos.system.exception.EOSRuntimeException。

  2. 规则说明 无。

# 【参考案例】

示例:根据查询模板更新CUST表中BIRTH='2009-09-09'的记录。

  • 参数设置
类型 名称 数据类型 值类别 传递方式
参数 dsName String default 常量 传引用
参数 value DataObject updateData 变量 传引用
参数 template DataObject template 变量 传引用
返回值 out0 int result 变量 传引用
  • 参数描述

    • 第一个参数为数据源名称,更多的说明参见基本操作类DatabaseUtil中的注意
    • 第二个参数是操作的SDO对象updateData
    • 第三个参数是SDO查询模板对象template
  • 其他说明 无。

  • 调用前的bizContext

<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <template __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
        <updateData __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME __type="java:java.lang.String">updateByTemplate</CUSTNAME>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </updateData>
    </__root>
</bizContext>
  • 等效的SQL语句
update CUST set CUSTNAME='updateByTemplate' where CUST.BIRTH=to_date('2009-09-09','yyyy-MM-dd')
  • 调用后的bizContext
<bizContext>
    <__root __id="0" __type="java:java.util.HashMap">
        <result __type="java:java.lang.Integer">2</result>
        <template __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME/>
            <BIRTH __type="java:java.util.Date">2009-09-09 00:00:00</BIRTH>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </template>
        <updateData __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
            <CUSTID/>
            <CUSTCODE/>
            <CUSTNAME __type="java:java.lang.String">updateByTemplate</CUSTNAME>
            <BIRTH/>
            <SEX/>
            <ADDRESS/>
            <PHOTO/>
        </updateData>
    </__root>
</bizContext>
上次更新: 2023/7/20下午12:25:28