自定义表单数据源 === ### 1.数据库表数据源 数据库表数据源,通过选择的数据库表,来提供数据集 ![](https://img.kancloud.cn/27/a7/27a700f318dbeeb795c171d9b71c2f25_1251x635.png) 数据源编码:数据源编码定义 数据源名称:数据源描述 数据源类型:选择数据库表 数据源:连接的数据库配置 数据库表名:数据库中表列表,选择一个数据库表 点击“解析生成字段”,生成选择表的字段信息, (注:解析生成时保证数据库有条数据,否则解析不出) 字段信息: (1)字段:字段名 (2)字段文本:字段描述 (3)控件类型:展示到页面的控件默认配置 (4)控件长度:展示到页面的控件长度设置 (5)字典类型:填写数据字典编码,如果控件类型为下拉菜单/单选框/复选框,则控件内容可以通过数据类型来获取 (6)校验规则:控件的默认校验规则,使用见3.9 ### 2.动态SQL数据源 动态SQL数据源,通过sql查询结果来提供数据集,可以传参数,参数为解析出来的查询参数 ![](https://img.kancloud.cn/8a/56/8a5623012069be65650f438b5afb7db7_1234x599.png) ![](https://img.kancloud.cn/4f/88/4f88cde8f0816e163a2564e94be68044_1249x632.png) (1)数据源编码定义唯一 (2)数据源类型,选择动态SQL, (3)动态数据源,和填报数据源,一般选择平台数据源 (4)动态SQL: ``` select * from jform_employee_leave where id='${id}' ``` 您可以键入’’作为一个参数,这里abc是参数的名称。例如: ``` select * from table where id = ${abc}。 select * from table where id = '${abc}'(如果id字段为字符串类型) ``` (5)填报数据库表:选择的表名,是展示的表单,录入的数据要保存的表, 动态SQL查询出来的字段要和填报数据库表的字段保持一致,字段名称不一样的sql使用AS 别名使其一致 点击“sql解析”,解析出sql查询出的数据列,并解析出sql中的参数 (注:解析生成时保证数据库有条数据,否则解析不出) (6)查询数据列:通过动态sql解析出来的查询列 字段:字段名 字段文本:字段描述 控件类型:展示到页面的控件默认配置 控件长度:展示到页面的控件长度设置 字典类型:填写数据字典编码,如果控件类型为下拉菜单/单选框/复选框,则控件内容可以通过数据类型来获取 校验规则:控件的默认校验规则,使用见3.9 (7)查询参数:解析动态sql里面的查询参数 参数:参数名 参数文本:参数label描述 默认值:参数的默认值设置 排序:参数展示的顺序,在自定义表单【预览】页面体现 ### 3.java数据源 java类型的数据源,通过配置的自己实现的Java类,Java类实现统一的上层接口,来设置数据集查询的字段、配置查询需要的参数变量、以及相关的添加修改操作 ![](https://img.kancloud.cn/14/7e/147e2bd2a8f2c6d5d74eefc62243046b_1249x455.png) ![](https://img.kancloud.cn/4f/e0/4fe0dde7f00fa074e5c26a23dcc541e7_1258x258.png) 参见demo类org/jeecgframework/web/autoform/dbjava/AutoFormDbJavaInterDemo.java 自己实现的类需要实现 AutoFormDbJavaInter 接口 1.定义查询的数据列以及查询参数 public AutoFormFields getFields() throws BusinessException ![](https://img.kancloud.cn/a1/1e/a11e16212f513b7d88847b32f766d5d3_633x373.png) 返回的对象AutoFormFields ``` List<String> files; //解析字段列表 List<String> params; //解析参数列表 ``` 2.实现根据参数查询数据集 public List<Map<String, Object>> getFormData(Map<String, Object> paramMap) ![](https://img.kancloud.cn/25/88/25886bc9ce12409bd50f85dcd125d223_818x361.png) 3.实现表单数据的保存(表单input的name即为定义的查询的数据列) public void insert(Map<String, Object> data) ![](https://img.kancloud.cn/a7/87/a787a094b4a0d0e2191c8fe728ca8a4e_768x335.png) 4.实现表单数据的更新(表单input的name即为定义的查询的数据列) public void update(Map<String, Object> data) ![](https://img.kancloud.cn/6b/0b/6b0b0140377b5e346acc7181f6d1d761_862x362.png) 原理: 1.Java数据源getFields()方法解析出查询参数和查询数据列,生成数据源配置 2.创建自定义表单,根据数据源设置表单字段 3.表单创建完成,不同的预览场景调用不同的实现方法 - 预览模式,通过填入参数变量,调用getFormData(Map<String, Object> paramMap)方法获取数据集,展示表单 - 添加模式,表单提交表单数据 调用insert(Map<String, Object> data) 方法处理数据 - 编辑模式:通过填入参数变量,调用getFormData(Map<String, Object> paramMap)方法获取数据集,初始化表单数据,用户修改表单数据,表单提交,调用update(Map<String, Object> data)方法处理数据