自定义表单数据源 === ### 1.数据库表数据源 数据库表数据源,通过选择的数据库表,来提供数据集 ![输入图片说明](https://static.oschina.net/uploads/img/201804/23200653_nHaL.png "在这里输入图片标题") 数据源编码:数据源编码定义 数据源名称:数据源描述 数据源类型:选择数据库表 数据源:连接的数据库配置 数据库表名:数据库中表列表,选择一个数据库表 点击“解析生成字段”,生成选择表的字段信息, (注:解析生成时保证数据库有条数据,否则解析不出) 字段信息: (1)字段:字段名 (2)字段文本:字段描述 (3)控件类型:展示到页面的控件默认配置 (4)控件长度:展示到页面的控件长度设置 (5)字典类型:填写数据字典编码,如果控件类型为下拉菜单/单选框/复选框,则控件内容可以通过数据类型来获取 (6)校验规则:控件的默认校验规则,使用见3.9 ### 2.动态SQL数据源 动态SQL数据源,通过sql查询结果来提供数据集,可以传参数,参数为解析出来的查询参数 ![输入图片说明](https://static.oschina.net/uploads/img/201804/23200801_hCCW.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201804/23200810_3eeK.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://static.oschina.net/uploads/img/201804/23200921_YCYY.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201804/23200931_Iy6O.png "在这里输入图片标题") 参见demo类org/jeecgframework/web/autoform/dbjava/AutoFormDbJavaInterDemo.java 自己实现的类需要实现 AutoFormDbJavaInter 接口 1.定义查询的数据列以及查询参数 public AutoFormFields getFields() throws BusinessException ![输入图片说明](https://static.oschina.net/uploads/img/201804/23201039_cy7c.png "在这里输入图片标题") 返回的对象AutoFormFields ``` List<String> files; //解析字段列表 List<String> params; //解析参数列表 ``` 2.实现根据参数查询数据集 public List<Map<String, Object>> getFormData(Map<String, Object> paramMap) ![输入图片说明](https://static.oschina.net/uploads/img/201804/23201117_fScg.png "在这里输入图片标题") 3.实现表单数据的保存(表单input的name即为定义的查询的数据列) public void insert(Map<String, Object> data) ![输入图片说明](https://static.oschina.net/uploads/img/201804/23201219_ruFp.png "在这里输入图片标题") 4.实现表单数据的更新(表单input的name即为定义的查询的数据列) public void update(Map<String, Object> data) ![输入图片说明](https://static.oschina.net/uploads/img/201804/23201323_v70F.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)方法处理数据