关于主表和子表数据的保存

业务需求:

投注站信息保存在表A里,投注站下的设备信息保存在表B里, 一个投注站会有多个设备,要在一个表单里进行投注站和设备信息的填写,保存,回填,修改。

思路:

1)将子表作为一个表单的组件,可配置/拖拽生成表单;

2)点击保存,先保存主表的记录,主表记录保存成功后,将主表的主键作为子表的外键,保存子表数据。

RuoYi实现:

 参考文档: 后台手册 | RuoYi

1)按照文档里的sql,新建顾客表和商品表

2)在 系统工具 - 代码生成 菜单下,导入新建的表;

3)编辑顾客表的配置, 生成信息 - 生成模板选择主子表,点击确定生成代码到项目里, 重启项目,添加菜单,测试验证能进行信息的维护。

代码逻辑:

使用 $('#form-customer-add').serialize() 获取表单上的参数,接口使用 实体类 SysCustomer 接收参数,使用@Transactional 保障事务。

新增:先新增顾客记录,将新增得到的顾客标识设置到商品实体类,批量新增商品记录;

修改:先删除这个顾客下已有的商品记录,再批量新增商品记录,最后修改顾客记录;

删除:根据顾客标识删除商品记录和顾客记录;

查询单个顾客信息:关联sys_customer和sys_good表,查询出的数据,使用resultMap将信息添加到实体类里;

列表查询:使用mybatis的分页,查询列表数据,使用if标签,判断实体参数 SysCustomer 里的属性有值,进行条件查询;

其他:

1)RuoYi使用的MyBatis,在添加记录处理处理参数时,会忽略那些值为 null 的参数,批量添加商品时,item.goodsId为null, 数据库使用默认的的自增主键作为id。

2)类似的代码生成还有 eladmin、jeecg。eladmin 持久层使用的 Spring Boot Jpa ,jeecg 支持了表单上一个主表配置多个子表。

功能待完善的点:

1)主键使用的默认自增策略,需要改为使用随机字符串uunid

2)这里主表和子表的业务场景比较广泛,考虑使用通用代码的维护方式,不用重启项目就能生效

3)表单上添加上传图片、附件的功能

4)补充维护多个子表的功能

5)这里子表展示的列表内容, 取得商品表配置,商品日期展示的文本输入框,应该调整为日期选择框

6)配置为所见即所得,考虑结合表单生成

你可能感兴趣的:(数据库)