在企业级开发当中多表的插入功能是一个很常见的问题,而且需要只通过一个接口来完成多表的插入这就需要在实体类中添加一个list集合,怎么添加,添加什么list集合,也是比较困扰我们这种初学者,我经过自己的失败的累加,获得的一些经验,希望可以为我后面的成长做一个拔高。
就比如这个是一个页面原型,他要在一个接口中实现添加功能,该怎么办,首先我们可以把他拆分成两个部分,一个是单表上面没有用红色方框外的部分,可以把他们理解为一对一的关系,这种关系是最简单的无论是建表还是写插入都很简单,页面有什么需要添加的数据,就在数据库中添加什么字段。就可以写一个这样的表。
表一:
Id |
门店名称 |
门店地址 (省市区) |
详细地址 |
联系电话 |
商家推荐 |
扫描二维码关注公众号,回复:
17498301 查看本文章
![]() |
然而就像红色方框内的就是一个一对多的关系了。所以一遇到一对多的情况,也是为了以后方便维护就建多张表,像这个案例我们需要在建立一张时间表。
Id |
表一id |
是否每天重复 |
星期几 |
创建时间 |
更新时间 |
用表一的id去关联表二。
建表这不是重点,关键如何在springboot项目中实现,观察上面的关系有一个先后关系,先完成表一,在完成表二,因为我们要在表二中插入表一的id。
要在springboot项目中实现一个接口插入两张表的数据,就要用到上面所说的要在实体类加入一个list集合。
上面方框内的请注意,因为这是和数据库关联的实体类,所以在表system_store_management中不可能存在一个list这样类型的字段,所以我们需要加入一个@TableField(exist = false),这样就可以为后面的service做准备了。
在controller中简单的写一下调用方法,一般情况下我们不会在controller写业务逻辑的代码
下面展示一下我controller的方法
Service
ServiceImpl
1.使用@Transactional(rollbackFor = Exception.class)确保数据库操作原子性,任何异常均回滚。
2.通过Mapper插入店铺管理记录。
3.若营业时长非0,则遍历营业时间列表:
4.对未设置或为0的每日重复标志设为1。
5.关联店铺管理ID后插入营业时间记录。