# com.eos.foundation.database.DatabaseExt
# 构件包说明
本工具类实现了对数据的扩展操作。
# 运算逻辑构件使用说明
该构件包包含以下构件:
序号 | 方法 | 功能描述 |
---|---|---|
1 | commonQueryWithPage(String dsName, DataObject criteria, Object pagecond) | 通用分页查询 |
2 | countByNamedSql(String dsName, String nameSqlId, Object parameterObject) | 根据命名SQL语句统计查询结果总记录数 |
3 | deleteEntityCascade(String dsName, DataObject entity) | 级联方式删除一条记录 |
4 | executeNamedSql(String dsName, String nameSqlId, Object parameterObject) | 执行命名SQL语句 |
5 | executeNamedSqlBatch(String dsName, String nameSqlId, Object[] parameterObject) | 批量执行命名SQL语句 |
6 | fillCodeDesc(String dsName, DataObject[] entities, String propertyName, String codeEntityName, String associationPropertyName, String codeEntityPropertyNames, String entityPropertyNames) | 从CodeEntity中获取描述放入entities中指定的属性里 |
7 | generateWhereSql(String dsName, DataObject criteriaDataObject) | 根据criteriaDataObject生成where语句 |
8 | getNextSequence(String name) | 根据名称获得序列号值 |
9 | getPrimaryKey(DataObject entity) | 获取持久化实体主键的序列号的值 |
10 | getTableName(String dsName, String entityName) | 获取持久化实体对应的表名 |
11 | insertEntityCascade(String dsName, DataObject entity) | 级联方式新增一条记录 |
12 | lockEntity(String dsName, DataObject dataObject) | 根据主键锁定一条记录 |
13 | queryByNamedSql(String dsName, String nameSqlId, Object parameterObject) | 根据命名SQL语句进行分页查询 |
14 | queryByNamedSql(String dsName, String nameSqlId, int begin, int length, Object parameterObject) | 根据命名SQL语句进行查询 |
15 | queryByNamedSqlWithPage(String dsName, String nameSqlId, DataObject pageCond, Object parameterObject) | 根据命名SQL语句进行分页查询 |
16 | queryEntitiesByCriteriaEntityWithPage(String dsName, DataObject criteriaEntity, DataObject pagecond) | 根据查询条件实体分页查询,根据查询条件实体指定查询Entity的字段 |
17 | queryEntitiesByTemplateWithPage(String dsName, DataObject template, DataObject pagecond) | 根据SDO数据模板查询条件分页查询,会查询Entity的所有字段 |
18 | setSequenceValue(String name, long value) | 把某个序列号对应的sequence强制设置为value值 |
19 | updateEntityCascade(String dsName, DataObject entity, String... property) | 级联方式更新一条记录 |
# commonQueryWithPage:通用分页查询
# 【功能说明】
使用criteria/template查询条件的通用分页查询。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.commonQueryWithPage,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | criteria | DataObject | 查询条件实体或者SDO数据查询模板 |
参数 | pagecond | Object | 分页条件 |
返回值 | out0 | DataObject[] | 符合查询模板的所有结果 |
抛出异常说明 查询失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 关于查询条件实体的说明请参考《EOS基础参考手册》中的"数据服务\CriteriaEntity"。
# 【参考案例】
示例:利用查询条件实体对CUST表进行分页查询。
场景描述 根据CUSTID字段分页查询CUST表记录。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | criteria | DataObject | criteria | 变量 | 传引用 |
参数 | pageCond | Object | pageCond | 变量 | 传引用 |
返回值 | out0 | DataObject[] | result | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为查询条件实体criteria
- 第三个参数为分页条件,分页对象pageCond
- 返回值为符合查询条件的所有结果,即CUST数组。
其他说明 无。
调用前的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="4" __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>
<pageCond __id="2" __type="sdo:com.eos.foundation.PageCond">
<begin/>
<length/>
<count __type="java:java.lang.Integer">0</count>
<totalPage/>
<currentPage/>
<isCount __type="java:java.lang.Boolean">true</isCount>
<isFirst/>
<isLast/>
<size/>
</pageCond>
</__root>
</bizContext>
- 等效的SQL语句 以oracle为例:
select * from
( select row_.*, rownum rownum_ from
( select CUSTID, CUSTCODE, CUSTNAME, BIRTH, SEX, ADDRESS from CUST where CUSTID in (2,3) ) row_
where rownum <= 10
)
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="4" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
<__entry __id="7" __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>
<pageCond __id="2" __type="sdo:com.eos.foundation.PageCond">
<begin __type="java:java.lang.Integer">0</begin>
<length __type="java:java.lang.Integer">10</length>
<count __type="java:java.lang.Integer">2</count>
<totalPage __type="java:java.lang.Integer">1</totalPage>
<currentPage __type="java:java.lang.Integer">1</currentPage>
<isCount __type="java:java.lang.Boolean">true</isCount>
<isFirst __type="java:java.lang.Boolean">true</isFirst>
<isLast __type="java:java.lang.Boolean">true</isLast>
<size __type="java:java.lang.Integer">2</size>
</pageCond>
<result __id="3" __type="java:[Lcommonj.sdo.DataObject;">
<__entry __componentType="java:commonj.sdo.DataObject" __id="5" __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="6" __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>
# countByNamedSql:根据命名SQL语句统计查询结果总记录数
# 【功能说明】
根据命名SQL语句统计查询结果总记录数。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.countByNamedSql,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | nameSqlId | String | 命名SQL的唯一标识 |
参数 | parameterObject | Object | 命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者基本类型的值) |
返回值 | out0 | int | 行数 |
抛出异常说明 统计失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 关于命名SQL的说明请参考《EOS基础参考手册》中的"数据服务\命名SQL"。
# 【参考案例】
示例:根据命名SQl统计查询结果数。
场景描述 根据命名SQL查询CUST表总记录数。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | nameSqlId | String | com.primeton.eos.foundation.example.namingsql.selectCusts | 常量 | 传引用 |
参数 | parameterObject | Object | queryCondition | 变量 | 传引用 |
返回值 | out0 | int | result | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,默认值default为项目数据源,一般不需要修改
- 第二个参数为命名SQL的唯一标识(命名SQL名称)
- 第三个参数为查询条件(SDO对象或是HashMap,或者基本类型的值)
- 返回值为查询记录总条数(int类型)。
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<queryCondition __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID/>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">cust</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</queryCondition>
</__root>
</bizContext>
- 等效的SQL语句 以oracle为例:
select count( * ) from
(select CUSTID,CUSTCODE,CUSTNAME,BIRTH from CUST WHERE CUSTNAME like 'cust%')
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<queryCondition __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID/>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">cust</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</queryCondition>
<result __type="java:java.lang.Integer">3</result>
</__root>
</bizContext>
# deleteEntityCascade:级联方式删除一条记录
# 【功能说明】
级联方式删除一条记录(只支持单层聚合方式1->n的级联操作)。只删除聚合关系(1->n)的n端的子对象记录。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.deleteEntityCascade,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
类型 | 名称 | 数据类型 | 参数描述 |
参数 | dsName | String | 数据源名称 |
参数 | entity | DataObject | 数据实体 |
抛出异常说明 无。
规则说明 无。
# 【参考案例】
示例:本例用来删除组织及其所拥有的操作员。
场景描述 删除组织及其所拥有的操作员。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | entity | DataObject | org | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为数据实体(一对多的数据实体)
其他说明 只支持单层聚合方式1->n的级联操作。
调用前的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">5</ORG_ID>
<PARENT_ORG_ID/>
<ORG_NAME/>
<ORG_CODE/>
<ORG_ADDRESS/>
<ORG_SEQ/>
<O_OPERATORS __collection="list"/>
</org>
</__root>
</bizContext>
- 等效的SQL语句
delete from O_OPERATOR where O_OPERATOR.ORG_ID=5
delete from O_ORG where ORG_ID=5
- 调用后的bizContext 同调用前。
# executeNamedSql:执行命名SQL语句
# 【功能说明】
执行命名SQL语句,所有操作隶属于一个原子事务。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.executeNamedSql,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | nameSqlId | String | 命名SQL的唯一标识 |
参数 | parameterObject | Object | 命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者基本类型的值) |
抛出异常说明 执行失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 关于命名SQL的说明请参考《EOS基础参考手册》中的"数据服务\命名SQL"。
警告
如果传入的参数的值有null值,最好指定该参数的jdbcType属性。 关于如何指定参数的jdbcType属性请参见《EOS基础参考手册》中的"数据服务\命名SQL\Parameter的属性" 和"数据服务\命名SQL\Inline Parameter Map"。
# 【参考案例】
示例:利用命名SQL删除CUST表所有记录。
场景描述 根据命名SQL删除CUST表所有记录。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | nameSqlId | String | com.primeton.eos.foundation.example.namingsql.deleteAllCusts | 常量 | 传引用 |
参数 | parameterObject | Object | null | 表达式 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为命名SQL的唯一标识(命名SQL名称)
- 第三个参数为更新条件(SDO对象或是HashMap,或者基本类型的值)
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __isNullOrEmpty="empty" __type="java:java.util.HashMap"/>
</bizContext>
- 等效的SQL语句
delete from CUST
- 调用后的bizContext 同调用前。
# executeNamedSqlBatch:批量执行命名SQL语句
# 【功能说明】
批量执行命名SQL语句。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.executeNamedSqlBatch,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | nameSqlId | String | 命名SQL的唯一标识 |
参数 | parameterObjects | Object[] | 命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者基本类型的值的数组) |
返回值 | out0 | int | 批处理影响的记录数说明当PreparedStatement.executeBatch()后返回一个int[], 而后会判断数组里的每个元素的值,如果值不等于Statement.SUCCESS_NO_INFO, 并且不等于 Statement.EXECUTE_FAILED,就会把这个值记入受影响的记录数; 如果有一个Statement.EXECUTE_FAILED,将会抛出异常。 |
抛出异常说明 执行失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 关于命名SQL的说明请参考《EOS基础参考手册》中的"数据服务\命名SQL"。
警告 如果传入的参数的值有null值,最好指定该参数的jdbcType属性。 关于如何指定参数的jdbcType属性请参见《EOS基础参考手册》中的"数据服务\命名SQL\Parameter的属性" 和"数据服务\命名SQL\Inline Parameter Map"。
# 【参考案例】
示例:利用命名SQL新增多条CUST表记录。
场景描述 利用命名SQL新增多条CUST表记录。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | nameSqlId | String | com.primeton.eos.foundation.example.namingsql.insertCust | 常量 | 传引用 |
参数 | parameterObjects | Object[] | custs | 变量 | 传引用 |
返回值 | out0 | int | result | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为命名SQL的唯一标识(命名SQL名称)
- 第三个参数为更新条件(SDO对象或是HashMap,或者基本类型的值的数组)
- 第四个返回值为批处理影响的记录数
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<custs __collection="array" __collectionid="1" __componentType="java:commonj.sdo.DataObject"
__id="2" __index="0" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID __type="java:java.lang.Integer">123</CUSTID>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">name1</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</custs>
<custs __collection="array" __collectionid="1" __id="3" __index="1"
__type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID __type="java:java.lang.Integer">456</CUSTID>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">name2</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</custs>
</__root>
</bizContext>
- 等效的SQL语句
insert into CUST (CUSTID,CUSTNAME,CUSTCODE) values (?,?,1)
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<result __type="java:java.lang.Integer">0</result>
<custs __collection="array" __collectionid="1" __componentType="java:commonj.sdo.DataObject"
__id="2" __index="0" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID __type="java:java.lang.Integer">123</CUSTID>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">name1</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</custs>
<custs __collection="array" __collectionid="1" __id="3" __index="1"
__type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID __type="java:java.lang.Integer">456</CUSTID>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">name2</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</custs>
</__root>
</bizContext>
说明 这是在Oracle10上跑出的结果,批处理执行后(PreparedStatement.executeBatch())返回的int[]的每个元素值都是Statement.SUCCESS_NO_INFO, 所以受影响的总行数是0。
# fillCodeDesc:从CodeEntity中获取描述放入entities中指定的属性里
# 【功能说明】
从CodeEntity中获取描述放入entities中指定的属性里。该功能实际就是持久化实体的的查询,唯一不同的是,其结果是根据参数指定的属性,放入条件entities中,而不是直接返回DataObject数组。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.data.DatabaseExt.fillCodeDesc,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | entities | DataObject[] | 数据实体 |
参数 | propertyName | String | 实体的属性名称,用于和CodeEntity的associationPropertyName做条件关联。注意propertyName和associationPropertyName都必须是实体的简单属性。 |
参数 | codeEntityName | String | CodeEntity的全名(必须是持久化实体) |
参数 | associationPropertyName | String | CodeEntity的属性名称 |
参数 | codeEntityPropertyNames | String | CodeEntity里存放描述的属性名称,多个名称之间可用","分割 |
参数 | entityPropertyNames | String | CodeEntity中取出的描述需要放入实体的对应的属性名称。该值如果为null, 则使用codeEntityPropertyName。多个名称之间可用","分割 |
抛出异常说明
- 参数codeEntityName、propertyName、associationPropertyName为null或空字符串时,抛出com.eos.system.exception.EOSRuntimeException异常;
- 参数codeEntityPropertyName、entityPropertyName为null时,抛出com.eos.system.exception.EOSRuntimeException异常;
- 参数codeEntityPropertyName、entityPropertyName用","分割以后的名称个数不匹配时(例如:codeEntityPropertyName="name,id,age", entityPropertyName="pName,pId"),抛出com.eos.system.exception.EOSRuntimeException异常。
规则说明 无。
# 【参考案例】
示例:本例操作员的名字来填充一个实体属性。
场景描述: 无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | entities | DataObject[] | results | 变量 | 传引用 |
参数 | propertyName | String | id | 常量 | 传引用 |
参数 | codeEntityName | String | com.primeton.eos.foundation.example.data.O_OPERATOR | 常量 | 传引用 |
参数 | associationPropertyName | String | OPERATOR_ID | 常量 | 传引用 |
参数 | codeEntityPropertyNames | String | USER_NAME | 常量 | 传引用 |
参数 | entityPropertyNames | String | name | 常量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为数据实体
- 第三个参数为实体属性名称,实体做条件关联的字段(id)
- 第四个参数为要查询的实体全名(必须是持久化实体)
- 第五个参数为业务字段类型项实体字段(OPERATOR_ID)
- 第六个参数为业务字段类型实体字段(USER_NAME)
- 第七个参数为放入实体的对应的属性名称(name)
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<results __id="1" __type="java:[Lcommonj.sdo.DataObject;">
<__entry __componentType="java:commonj.sdo.DataObject" __id="2" __index="0"
__type="sdo:com.primeton.das.datatype.AnyType">
<id __type="java:java.lang.Long">1</id>
</__entry>
<__entry __id="3" __index="1" __type="sdo:com.primeton.das.datatype.AnyType">
<id __type="java:java.lang.Long">2</id>
</__entry>
<__entry __id="4" __index="2" __type="sdo:com.primeton.das.datatype.AnyType">
<id __type="java:java.lang.Long">3</id>
</__entry>
</results>
</__root>
</bizContext>
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<results __id="1" __type="java:[Lcommonj.sdo.DataObject;">
<__entry __componentType="java:commonj.sdo.DataObject" __id="2" __index="0"
__type="sdo:com.primeton.das.datatype.AnyType">
<id __type="java:java.lang.Long">1</id>
<name __type="java:java.lang.String">opeartor_1</name>
</__entry>
<__entry __id="3" __index="1" __type="sdo:com.primeton.das.datatype.AnyType">
<id __type="java:java.lang.Long">2</id>
<name __type="java:java.lang.String">opeartor_2</name>
</__entry>
<__entry __id="4" __index="2" __type="sdo:com.primeton.das.datatype.AnyType">
<id __type="java:java.lang.Long">3</id>
<name __type="java:java.lang.String">opeartor_3</name>
</__entry>
</results>
</__root>
</bizContext>
# generateWhereSql:根据criteriaDataObject生成where语句
# 【功能说明】
根据criteriaDataObject生成where语句。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.generateWhereSql,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | java.lang.String | 数据源名称,例如"default" |
参数 | criteriaDataObject | commonj.sdo.DataObject | criteria的DataObject |
返回值 | java.lang.String | 生成的where语句 |
抛出异常说明 当参数criteriaDataObject格式不符合要求时,会抛出com.eos.das.entity.DASEntityRuntimeException异常。
规则说明 无。
# 【参考案例】
示例:将查询客户信息的criteria对象生成where语句。
场景描述 无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | java.lang.String | default | 常量 | 传引用 |
参数 | criteriaDataObject | commonj.sdo.DataObject | criteria | 变量 | 传引用 |
返回值 | out0 | java.lang.String | result | 变量 | 传引用 |
参数描述 无。
其他说明 无。
调用前的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>
<result __isNullOrEmpty="null"/>
</__root>
</bizContext>
- 调用后的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>
<result __type="java:java.lang.String">where CUST.CUSTID in (2, 3)</result>
</__root>
</bizContext>
# getNextSequence:根据名称获得序列号值
# 【功能说明】
根据sequence ID获得序列号值。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.getNextSequence,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | name | String | 序列号名称 |
返回值 | out0 | long | 序列号值 |
抛出异常说明 获取序列号出错时抛出异常java.lang.Exception。
规则说明 默认情况下,sequence一次可以缓存100个值,超过约定个数才会从数据库重新取值。如果没用到100个且系统发生重启,那么再次调用getSequence方法取值,就会发现取得的sequence值是下一组100个sequence的第一个值。也可通过修改当前应用的EOS Server系统配置文件sys-config.xml把100修改成其他值。具体配置如下:
<module name="Das">
...
<group name="PoolSize">
<configValue key="PoolSize">100</configValue>
</group>
...
</module>
sequence与数据源
EOS是通过表EOS_UNIQUE_TABLE来存放这些sequence值的。 关于从哪个数据源中查找EOS_UNIQUE_TABLE表,EOS首先会从名称是EOS-Unique的数据源中去查找EOS_UNIQUE_TABLE表;如果没有找到名称是EOS-Unique的数据源 (注意:不是在EOS-Unique数据源中找不到EOS_UNIQUE_TABLE表,如果没找到表,会直接抛异常) ,EOS会从名称是default的数据源中去查找EOS_UNIQUE_TABLE表,如果再没有找到default的数据源,就会抛出EOS运行时异常。
# 【参考案例】
示例:根据sequence的名称获取一个序列号值。
场景描述 获取一个序列号值。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | name | String | test_sequense | 常量 | 传引用 |
返回值 | out0 | long | value | 变量 | 传引用 |
参数描述
- 参数为序列号名称
- 返回值为返回的序列号值
其他说明 功能:根据sequence的名称获取对应的sequence值。
调用前的bizContext
<bizContext>
<__root __id="0" __isNullOrEmpty="empty" __type="java:java.util.HashMap"/>
</bizContext>
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<value __type="java:java.lang.Long">1</value>
</__root>
</bizContext>
# getPrimaryKey:获取持久化实体主键的序列号的值
# 【功能说明】
获取持久化实体主键的序列号的值,如果主键字段已经有值将不再生成主键。主键的序列号的名称是"实体名称+'.'+属性名称"。如果一个实体有多个主键,则依次赋值。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.getPrimaryKey,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | entity | DataObject | 持久化实体对象 |
抛出异常说明 无。
规则说明 无。
# 【参考案例】
示例:为CUST实体获取主键。
场景描述 增加CUST表记录,获取主键编号。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | entity | DataObject | cust | 变量 | 传引用 |
参数描述 第一个参数为要获取主键的实体(CUST)。
其他说明 功能:对于组合主键的表会依次赋值。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<cust __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID/>
<CUSTCODE/>
<CUSTNAME/>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</cust>
</__root>
</bizContext>
- 调用后的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">1</CUSTCODE>
<CUSTNAME/>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</cust>
</__root>
</bizContext>
# getTableName:获取持久化实体对应的表名
# 【功能说明】
获取持久化实体对应的表名。
说明
传入的entityName必须是持久化实体的实体名称,如果传入的是非持久化实体或一般实体的实体名称,会抛出EOSRuntimeException异常。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.getTableName,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
类型 | 名称 | 数据类型 | 参数描述 |
参数 | dsName | java.lang.String | 数据源名称,例如"default" |
参数 | entityName | java.lang.String | 持久化实体全名 |
返回值 | java.lang.String | 对应的表名 |
抛出异常说明 当参数entityName为null或空字符串时,会抛出com.eos.system.exception.EOSRuntimeException异常。 如果传入的entityName是非持久化实体或一般实体的实体名称,会抛出ExceptionCode=24000053的EOSRuntimeException异常。
规则说明 无。
# 【参考案例】
示例:获取持久化实体com.primeton.foundation.database.sysdataset.Customer对应的表名。
场景描述 无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | java.lang.String | default | 常量 | 传引用 |
参数 | entityName | java.lang.String | com.primeton.eos.foundation.example.data.CUST | 常量 | 传引用 |
返回值 | out0 | java.lang.String | result | 变量 | 传引用 |
参数描述 无。
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<result __isNullOrEmpty="null"/>
</__root>
</bizContext>
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<result __type="java:java.lang.String">CUST</result>
</__root>
</bizContext>
# insertEntityCascade:级联方式新增一条记录
# 【功能说明】
级联方式新增一条记录(只支持单层聚合方式一对多的级联操作,不支持一对一级联)。如果主键字段值为空将自动生成一个主键。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.insertEntityCascade,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | entity | DataObject | 数据实体 |
抛出异常说明 无。
规则说明 无。
# 【参考案例】
示例:本案例用于新增组织和操作员信息。
场景描述
无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | entity | DataObject | org | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类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">5</ORG_ID>
<PARENT_ORG_ID/>
<ORG_NAME __type="java:java.lang.String">org_5</ORG_NAME>
<ORG_CODE __type="java:java.lang.String">org_5</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">51</OPERATOR_ID>
<USER_ID/>
<USER_NAME __type="java:java.lang.String">oper_51</USER_NAME>
<BIRTHDAY/>
<GENDER/>
<POSTCODE/>
<ADDRESS/>
<PHONE/>
<EMAIL/>
<MEMO/>
<ORG_ID/>
<O_ORG __refid="1"/>
</__entry>
<__entry __id="4" __index="1"
__type="sdo:com.primeton.eos.foundation.example.data.O_OPERATOR">
<OPERATOR_ID __type="java:java.lang.Long">52</OPERATOR_ID>
<USER_ID/>
<USER_NAME __type="java:java.lang.String">oper_52</USER_NAME>
<BIRTHDAY/>
<GENDER/>
<POSTCODE/>
<ADDRESS/>
<PHONE/>
<EMAIL/>
<MEMO/>
<ORG_ID/>
<O_ORG __refid="1"/>
</__entry>
</O_OPERATORS>
</org>
</__root>
</bizContext>
- 等效的SQL语句
insert into O_ORG (ORG_NAME, ORG_CODE, ORG_ID) values ('org_5', 'org_5', 5)
insert into O_OPERATOR (USER_NAME, ORG_ID, OPERATOR_ID) values ('oper_51', 5, 51)
insert into O_OPERATOR (USER_NAME, ORG_ID, OPERATOR_ID) values ('oper_52', 5, 52)
- 调用后的bizContext 同调用前。
# lockEntity:根据主键锁定一条记录
# 【功能说明】
根据主键给当前记录添加一个事务锁。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.lockEntity,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
类型 | 名称 | 数据类型 | 参数描述 |
参数 | dsName | String | 数据源名称 |
参数 | dataObject | DataObject | 数据实体值 |
抛出异常说明 锁定失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 无。
# 【参考案例】
示例:锁定CUST表某条记录。
场景描述 要操作一条记录保证事务一致性,根据主键给表记录加事务锁。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | dataObject | DataObject | lockEntity | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为要加锁记录对应的实体(CUST)
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<lockEntity __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/>
</lockEntity>
</__root>
</bizContext>
- 等效的SQL语句
select CUSTID, CUSTNAME, BIRTH, SEX, ADDRESS from CUST where CUSTID = 1 and CUSTCODE='cust_1'
for update;
- 调用后的bizContext 同调用前。
# queryByNamedSql:根据命名SQL语句查询所有
# 【功能说明】
根据命名SQL语句进行查询。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.queryByNamedSql,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | nameSqlId | String | 命名SQL的唯一标识 |
参数 | parameterObject | Object | 命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者是个基本类型的值) |
返回值 | out0 | Object[] | 符合查询条件的所有结果 |
抛出异常说明 查询失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 关于命名SQL的说明请参考《EOS基础参考手册》中的"数据服务\命名SQL"。
# 【参考案例】
示例:利用命名SQL查询CUST表数据。
场景描述 根据命名SQL查询CUST表记录。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
参数 | dsName | String | default | 常量 | 传引用 |
参数 | nameSqlId | String | com.primeton.eos.foundation.example.namingsql.selectCustById | 常量 | 传引用 |
参数 | parameterObject | Object | 1 | 常量 | 传引用 |
返回值 | out0 | Object[] | result | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为命名SQL的唯一标识(命名SQL名称)
- 第三个参数为命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者是个基本类型的值)
- 返回值为符合查询模板的所有结果,即CUST数组
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __isNullOrEmpty="empty" __type="java:java.util.HashMap"/>
</bizContext>
- 等效的SQL语句
select CUSTID,CUSTCODE,CUSTNAME,BIRTH from CUST where CUSTID=1
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<result __id="1" __objectArray="true" __type="java:[Ljava.lang.Object;">
<__entry __componentType="java:java.lang.Object" __id="2" __index="0" __objectArray="true"
__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/>
<ADDRESS/>
<PHOTO/>
</__entry>
</result>
</__root>
</bizContext>
# queryByNamedSql:根据命名SQL语句查询部分
# 【功能说明】
根据命名SQL语句进行查询,可以设置起始行号和结果集长度。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.queryByNamedSql,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | nameSqlId | String | 命名SQL的唯一标识 |
参数 | begin | int | begin 起始行号(从0开始) |
参数 | length | int | 结果集长度 |
参数 | parameterObject | Object | 命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者基本类型的值) |
返回值 | out0 | Object[] | 符合查询条件的部分结果 |
抛出异常说明 查询失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 关于命名SQL的说明请参考《EOS基础参考手册》中的"数据服务\命名SQL"。
# 【参考案例】
示例:利用命名SQL从指定起始行,查询CUST表指定长度数据。
场景描述 根据命名SQL查询CUST表记录一部分。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | nameSqlId | String | com.primeton.eos.foundation.example.namingsql.selectCusts | 常量 | 传引用 |
参数 | begin | int | 1 | 常量 | 传引用 |
参数 | length | int | 1 | 常量 | 传引用 |
参数 | parameterObject | Object | queryCondition | 变量 | 传引用 |
返回值 | out0 | Object[] | result | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为命名SQL的唯一标识(命名SQL名称)
- 第三个参数为起始行号(从0开始)
- 第四个参数为结果集长度
- 第五个参数为命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者基本类型的值)
- 返回值为符合查询模板的所有结果,即CUST集合数组
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<queryCondition __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID/>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">cust</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</queryCondition>
</__root>
</bizContext>
- 等效的SQL语句 以oracle为例:
select CUSTID,CUSTCODE,CUSTNAME,BIRTH from CUST WHERE CUSTNAME like 'cust%'
命名sql是按照滚动结果集的方式分页的,因此不会产生分页的sql语句
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<queryCondition __id="1" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID/>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">cust</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</queryCondition>
<result __id="2" __objectArray="true" __type="java:[Ljava.lang.Object;">
<__entry __componentType="java:java.lang.Object" __id="3" __index="0" __objectArray="true"
__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>
</result>
</__root>
</bizContext>
# queryByNamedSqlWithPage:根据命名SQL语句进行分页查询
# 【功能说明】
根据命名SQL语句进行分页查询。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.queryByNamedSqlWithPage,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | nameSqlId | String | 命名SQL的唯一标识 |
参数 | pageCond | DataObject | 分页实体 |
参数 | parameterObject | Object | 命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者基本类型的值) |
返回值 | out0 | Object[] | 查询结果集 |
抛出异常说明 查询失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 关于命名SQL的说明请参考《EOS基础参考手册》中的"数据服务\命名SQL"。
# 【参考案例】
示例:利用命名SQL对CUST表进行分页查询。
场景描述 根据命名SQL分页查询CUST表记录。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | nameSqlId | String | com.primeton.eos.foundation.example.namingsql.selectCusts | 常量 | 传引用 |
参数 | pageCond | DataObject | pageCond | 变量 | 传引用 |
参数 | parameterObject | Object | queryCondition | 变量 | 传引用 |
返回值 | out0 | Object[] | result | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为命名SQL的唯一标识(命名SQL名称)
- 第三个参数为分页实体(PageCond类型)
- 第四个参数为查询条件(SDO对象或是HashMap,或者基本类型的值)
- 返回值为查询结果集
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<pageCond __id="1" __type="sdo:com.eos.foundation.PageCond">
<begin/>
<length/>
<count __type="java:java.lang.Integer">0</count>
<totalPage/>
<currentPage/>
<isCount __type="java:java.lang.Boolean">true</isCount>
<isFirst/>
<isLast/>
<size/>
</pageCond>
<queryCondition __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID/>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">cust</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</queryCondition>
</__root>
</bizContext>
- 等效的SQL语句 以oracle为例:
select CUSTID,CUSTCODE,CUSTNAME,BIRTH from CUST WHERE CUSTNAME like 'cust%'
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<pageCond __id="1" __type="sdo:com.eos.foundation.PageCond">
<begin __type="java:java.lang.Integer">0</begin>
<length __type="java:java.lang.Integer">10</length>
<count __type="java:java.lang.Integer">3</count>
<totalPage __type="java:java.lang.Integer">1</totalPage>
<currentPage __type="java:java.lang.Integer">1</currentPage>
<isCount __type="java:java.lang.Boolean">true</isCount>
<isFirst __type="java:java.lang.Boolean">true</isFirst>
<isLast __type="java:java.lang.Boolean">true</isLast>
<size __type="java:java.lang.Integer">3</size>
</pageCond>
<queryCondition __id="2" __type="sdo:com.primeton.eos.foundation.example.data.CUST">
<CUSTID/>
<CUSTCODE/>
<CUSTNAME __type="java:java.lang.String">cust</CUSTNAME>
<BIRTH/>
<SEX/>
<ADDRESS/>
<PHOTO/>
</queryCondition>
<result __id="3" __objectArray="true" __type="java:[Ljava.lang.Object;">
<__entry __componentType="java:java.lang.Object" __id="4" __index="0" __objectArray="true"
__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/>
<ADDRESS/>
<PHOTO/>
</__entry>
<__entry __id="5" __index="1" __objectArray="true"
__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="6" __index="2" __objectArray="true"
__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>
</result>
</__root>
</bizContext>
# queryEntitiesByCriteriaEntityWithPage:根据查询条件实体分页查询
# 【功能说明】
根据查询条件实体分页查询,根据查询条件实体指定查询Entity的字段。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.queryEntitiesByCriteriaEntityWithPage,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | criteriaEntity | DataObject | 查询条件实体 |
参数 | pagecond | DataObject | 分页条件 |
返回值 | out0 | DataObject[] | 符合查询条件的所有结果 |
抛出异常说明 查询失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 关于查询条件实体的说明请参考《EOS基础参考手册》中的"数据服务\CriteriaEntity"。
# 【参考案例】
示例:根据查询实体对CUST表进行分页查询。
场景描述 根据CUSTID字段分页查询CUST表记录。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | criteriaEntity | DataObject | criteria | 变量 | 传引用 |
参数 | pageCond | DataObject | pageCond | 变量 | 传引用 |
返回值 | out0 | DataObject[] | result | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为查询条件实体(criteriaType)
- 第三个参数为分页条件,分页对象(PageCond)
- 返回值为符合查询模板的所有结果,即CUST数组
其他说明 无。
调用前的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="4" __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>
<pageCond __id="2" __type="sdo:com.eos.foundation.PageCond">
<begin/>
<length/>
<count __type="java:java.lang.Integer">0</count>
<totalPage/>
<currentPage/>
<isCount __type="java:java.lang.Boolean">true</isCount>
<isFirst/>
<isLast/>
<size/>
</pageCond>
</__root>
</bizContext>
- 等效的SQL语句 以oracle为例:
select *
from (select row_.*, rownum rownum_
from (select CUSTID, CUSTCODE, CUSTNAME, BIRTH, SEX, ADDRESS
from CUST
where CUSTID in (2, 3)) row_
where rownum <= 10)
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="4" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
<__entry __id="7" __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>
<pageCond __id="2" __type="sdo:com.eos.foundation.PageCond">
<begin __type="java:java.lang.Integer">0</begin>
<length __type="java:java.lang.Integer">10</length>
<count __type="java:java.lang.Integer">2</count>
<totalPage __type="java:java.lang.Integer">1</totalPage>
<currentPage __type="java:java.lang.Integer">1</currentPage>
<isCount __type="java:java.lang.Boolean">true</isCount>
<isFirst __type="java:java.lang.Boolean">true</isFirst>
<isLast __type="java:java.lang.Boolean">true</isLast>
<size __type="java:java.lang.Integer">2</size>
</pageCond>
<result __id="3" __type="java:[Lcommonj.sdo.DataObject;">
<__entry __componentType="java:commonj.sdo.DataObject" __id="5" __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="6" __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>
# queryEntitiesByTemplateWithPage:根据SDO数据模板分页查询
# 【功能说明】
根据SDO数据模板查询条件分页查询,会查询Entity的所有字段。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.queryEntitiesByTemplateWithPage,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | template | DataObject | SDO数据查询模板 |
参数 | pagecond | DataObject | 分页条件。 |
返回值 | out0 | DataObject[] | 符合查询模板的所有结果 |
抛出异常说明 查询失败抛出异常com.eos.system.exception.EOSRuntimeException。
规则说明 无。
# 【参考案例】
示例:利用查询模板对CUST表进行分页查询。
场景描述 根据custname字段分页查询CUST表记录。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | template | DataObject | template | 变量 | 传引用 |
参数 | pageCond | DataObject | pageCond | 变量 | 传引用 |
返回值 | out0 | DataObject[] | result | 变量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为查询条件实体(criteriaType)或者SDO数据查询模板
- 第三个参数为分页条件,分页对象(PageCond)
- 返回值为符合查询模板的所有结果,即CUST数组
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<pageCond __id="1" __type="sdo:com.eos.foundation.PageCond">
<begin/>
<length/>
<count __type="java:java.lang.Integer">0</count>
<totalPage/>
<currentPage/>
<isCount __type="java:java.lang.Boolean">true</isCount>
<isFirst/>
<isLast/>
<size/>
</pageCond>
<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>
- 等效的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 <= 10)
where rownum_ > 1
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<pageCond __id="1" __type="sdo:com.eos.foundation.PageCond">
<begin __type="java:java.lang.Integer">0</begin>
<length __type="java:java.lang.Integer">10</length>
<count __type="java:java.lang.Integer">2</count>
<totalPage __type="java:java.lang.Integer">1</totalPage>
<currentPage __type="java:java.lang.Integer">1</currentPage>
<isCount __type="java:java.lang.Boolean">true</isCount>
<isFirst __type="java:java.lang.Boolean">true</isFirst>
<isLast __type="java:java.lang.Boolean">true</isLast>
<size __type="java:java.lang.Integer">2</size>
</pageCond>
<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>
<template __id="3" __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>
# setSequenceValue:强制把某个序列号对应的sequence设值
# 【功能说明】
把某个sequence ID对应的sequence强制设置为value值,其中value值必须比当前sequence值大。数据服务会默认缓存100个sequence,只有当100个sequence全部用完后,新设定的sequence起始值才会生效。即调用此方法后,不会同步更新缓存。持久化步长配置保存在config\sys-config.xml文件中,具体如下:
<module name="Das">
...
<group name="PoolSize">
<configValue key="PoolSize">100</configValue>
</group>
...
</module>
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.setSequenceValue,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | name | Sting | 序列号名称 |
参数 | value | long | 序列号值(由于sequence是递增的,故该值必须比上一个sequence值大) |
抛出异常说明 设置序列号出错时抛出异常java.lang.Exception。
规则说明 见本运算逻辑的功能说明。
# 【参考案例】
示例:强制把某个序列号对应的sequence设值。
场景描述 强制把某个序列号对应的sequence设值。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | name | String | test_sequense_2 | 常量 | 传引用 |
参数 | value | long | 300 | 常量 | 传引用 |
参数描述
- 第一个参数为序列号名称
- 第二个参数为重新强制设置序列号的值
其他说明 setSequenceValue,强制把某个序列号对应的sequence设值,需要重新启动应用服务器才生效。
调用前的bizContext
<bizContext>
<__root __id="0" __isNullOrEmpty="empty" __type="java:java.util.HashMap"/>
</bizContext>
- 调用后的bizContext 同调用前。
# updateEntityCascade:级联方式更新一条记录
# 【功能说明】
级联方式更新一条记录(只支持单层聚合方式1->n的级联操作)。
级联更新规则如下:
如果指定的N端属性没有设置要更新的值,N端对应的记录会被全部删除。
如果指定的N端属性设置了需要更新的值:
先删除N端的没有在要更新的值列表的记录,根据主键删除。
如果要更新的值里有数据库中不存在的值,则执行insert。
如果要更新的值里是数据库中已存在的值,则执行update。
说明
如果没有设置N端属性要更新的值,又不想删除N端对应的记录时,可以将要级联更新的属性名称设为"__null"。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.database.DatabaseExt.updateEntityCascade,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | dsName | String | 数据源名称 |
参数 | entity | DataObject | 数据实体 |
参数 | property | String... | 级联更新的从表属性名称(变参,可以是多个) |
抛出异常说明 无。
规则说明 无。
# 【参考案例】
示例:本例用来更新组织及其操作员。
场景描述: 更新组织及其操作员。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | dsName | String | default | 常量 | 传引用 |
参数 | entity | DataObject | org | 变量 | 传引用 |
参数 | property | String | O_OPERATORS | 常量 | 传引用 |
参数描述
- 第一个参数为数据源,更多的说明参见基本操作类DatabaseUtil中的注意
- 第二个参数为数据实体(一对多的数据实体)
- 第三个参数为级联更新的从表属性名称(O_OPERATORS)
其他说明 只支持单层聚合方式1->n的级联操作。
调用前的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">5</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">51</OPERATOR_ID>
<USER_ID/>
<USER_NAME __type="java:java.lang.String">update_oper_51</USER_NAME>
<BIRTHDAY/>
<GENDER/>
<POSTCODE/>
<ADDRESS/>
<PHONE/>
<EMAIL/>
<MEMO/>
<ORG_ID/>
<O_ORG __refid="1"/>
</__entry>
<__entry __id="4" __index="1"
__type="sdo:com.primeton.eos.foundation.example.data.O_OPERATOR">
<OPERATOR_ID __type="java:java.lang.Long">52</OPERATOR_ID>
<USER_ID/>
<USER_NAME __type="java:java.lang.String">update_oper_52</USER_NAME>
<BIRTHDAY/>
<GENDER/>
<POSTCODE/>
<ADDRESS/>
<PHONE/>
<EMAIL/>
<MEMO/>
<ORG_ID/>
<O_ORG __refid="1"/>
</__entry>
</O_OPERATORS>
</org>
</__root>
</bizContext>
- 等效的SQL语句
delete from O_OPERATOR where not (O_OPERATOR.OPERATOR_ID=51 and O_OPERATOR.OPERATOR_ID=52)
and O_OPERATOR.ORG_ID=5
insert into O_OPERATOR (USER_NAME, ORG_ID, OPERATOR_ID) values ('update_oper_51', 5, 51)
insert into O_OPERATOR (USER_NAME, ORG_ID, OPERATOR_ID) values ('update_oper_52', 5, 52)
- 调用后的bizContext 同调用前。