# ebuilder表单对接数据源手册

数据源是一个逻辑表的概念，非实体表，因此无法、也不允许通过直接查询db来获取字段、数据信息（即使你可以做到），所有的数据本身相关的信息均需从数据源提供的接口取得。

## 与现有业务的差异

       对接数据源，需要将所需改造业务中通过直接查询数据库得到的字段信息、数据信息更换为通过数据源接口查询，其他业务代码可复用。目前数据源提供字段查询、数据查询、数据统计等接口。

## 已封装方法

入参DataSource对象为需要接入数据源的业务bean所需要实现的接口，包含了数据源类型（DsSourceType）、数据源模块（DsGroupId）和数据源id（DsTableId），分别对应数据源浏览框返回的数据源信息。

1.      获取字段接口：

/\*\*

            \* 获取数据源字段信息

            \* @param datasource 数据源对象

            \* @return List\<VformField\>

       \*/

com.weaver.ebuilder.form.base.utils.vform.VformUtil#getVformFields

其他拓展接口详见代码。

2.      获取数据接口

/\*\*

\* 获取数据源数据列表接口

\* @param datasource 数据源对象

\* @param queryDto 查询对象

\* @return

     \*/

com.weaver.ebuilder.form.base.utils.vform.VformUtil#getListDatas

 其他拓展接口详见代码。

QueryDto用于封装查询数据携带的参数，包括查询条件，聚合条件，分组条件，所查询的字段、排序、数据源的id等

```java
public class QueryDto  {	
	//查询条件（新的条件设计器），可通过VformConditionUtil构造
	private ConditionTreeDto conditionTrees;
    //查询条件（旧版条件设计器）
    private List<QueryConditionDto> conditions;
    //group by 字段
    private List<GroupFieldsDto> groupFields;
    //分组聚合字段
    private List<GroupStatFieldDto> groupStatFields;
    //排序条件 有可能是分组后的排序,也有可能是分组前的排序.
    private List<OrderFieldDto> orderFields;
    //普通聚合字段
    private List<StatFieldDto> statFields;
    //查询字段
    private List<QueryFieldDto> queryFields;
    // 后置分组条件
    private List<GroupFieldsDto> groupFieldsPost;
    // 后置分组聚合字段
    private List<GroupStatFieldDto> groupStatFieldsPost;
    // 字段链接所需的Dto.
    private List<GroupConcatDto> groupConcatFields;
    // 数据源id
    private String tableId;
    // 数据源模块id
    private String groupId;
    //分页参数
    private int pageNo;
    private int pageSize;
	//是否查询count
    private boolean queryCount;
    // 是否进行权限的校验,查询无权限列表需传入“ALL”
    private String permissionType;
	//是否包含明细表
    private Boolean containDetailTable;
    // 需要查询的子表的数量.
    private Integer detailTableNum;
    // 子表的分页参数:当前页码
    private int subPageNo;
    // 子表分页参数:页面数据数量
    private int subPageSize;
    // 过滤明细子表标识
    private boolean filterDetailSubTableMark;
}
```
