场景

业务中经常会用到一对多的数据库的设计与数据的增删改查的实现。

比如要实现一个对手机应用配置允许访问的权限的业务。

app与权限就是一对多的关系。即一个app可以拥有多个权限。

注:

实现

首先设计数据库。要有一个app表、一个权限表、一个app与权限关联表。

首先设计app表

这里是存储的APP对象的一些属性,即一对多中一的那端。

然后创建权限表

这里是存储权限实体的一些属性,即一对多中多的那一方。

以上两个表的id都是主键并且是非空自增的。

然后还需要创建一个关联表实现这种一对多的映射关系。

这里使用的是主表的app编码用来跟从表的id进行关联。

为什么不用主表的id和从表的id进行关联,因为在执行插入时,主表的app编码是有点的,但是id设置是自增的,还没有值,

所以用主表的编码和从表的id进行关联。

比如app表中的数据有

权限表中的数据

那么映射表中的数据

以上映射表代表编码为weixin的app对应id为1的权限,编码为qq的app对应id为1和2的权限。

数据库设计好之后就是对应的实体类以及相关的代码这里使用代码生成工具将主表app表和从表权限表以及之间的关联表生成实体类和相关代码。

主表app表实体

public classYckzAppgl

{private static final long serialVersionUID = 1L;/** id*/

privateLong id;/** 应用编码*/

privateString appcode;/** 应用名称*/

privateString appname;/** 数据存储路径*/

privateString sjcclj;/** 应用包名*/

privateString appbm;/**

* 创建时间*/

privateDate cjsj;/**

* 权限列表*/

private ListqxList;public ListgetQxList() {returnqxList;

}public void setQxList(ListqxList) {this.qxList =qxList;

}public intgetOffset() {returnoffset;

}public void setOffset(intoffset) {this.offset =offset;

}public intgetPageNum() {returnpageNum;

}public void setPageNum(intpageNum) {this.pageNum =pageNum;

}public intgetPageSize() {returnpageSize;

}public void setPageSize(intpageSize) {this.pageSize =pageSize;

}publicDate getCjsj() {returncjsj;

}public voidsetCjsj(Date cjsj) {this.cjsj =cjsj;

}public voidsetId(Long id)

{this.id =id;

}publicLong getId()

{returnid;

}public voidsetAppcode(String appcode)

{this.appcode =appcode;

}publicString getAppcode()

{returnappcode;

}public voidsetAppname(String appname)

{this.appname =appname;

}publicString getAppname()

{returnappname;

}public voidsetSjcclj(String sjcclj)

{this.sjcclj =sjcclj;

}publicString getSjcclj()

{returnsjcclj;

}public voidsetAppbm(String appbm)

{this.appbm =appbm;

}publicString getAppbm()

{returnappbm;

}

@OverridepublicString toString() {return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

.append("id", getId())

.append("appcode", getAppcode())

.append("appname", getAppname())

.append("sjcclj", getSjcclj())

.append("appbm", getAppbm())

.toString();

}

}

这里除了用代码生成工具生成的基本属性外,还要添加一个从表权限的List

private List qxList;

这样在进行查询主表数据时能将从表的权限数据进行存储。

从表的实体类

public classYckzQuanxian extends BaseEntity

{private static final long serialVersionUID = 1L;/** id*/

privateLong id;/** 权限编码*/

privateString qxcode;/** 权限名称*/

privateString qxname;/** 权限包名*/

privateString qxbm;//是否勾选

privateBoolean sfgx;publicBoolean getSfgx() {returnsfgx;

}public voidsetSfgx(Boolean sfgx) {this.sfgx =sfgx;

}public voidsetId(Long id)

{this.id =id;

}publicLong getId()

{returnid;

}public voidsetQxcode(String qxcode)

{this.qxcode =qxcode;

}publicString getQxcode()

{returnqxcode;

}public voidsetQxname(String qxname)

{this.qxname =qxname;

}publicString getQxname()

{returnqxname;

}public voidsetQxbm(String qxbm)

{this.qxbm =qxbm;

}publicString getQxbm()

{returnqxbm;

}

@OverridepublicString toString() {return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

.append("id", getId())

.append("qxcode", getQxcode())

.append("qxname", getQxname())

.append("qxbm", getQxbm())

.toString();

}

}

然后对这两个表分别使用代码生成工具生成Controller、Service、ServiceImpl、Mapper等相关代码。

然后在主表对应的Controller中,分别引入主表从表和关联表对应的Service接口层。

@AutowiredprivateIYckzAppglService yckzAppglService;

@AutowiredprivateIYckzQuanxianService yckzQuanxianService;

@Autowiredprivate IYckzAppglQxService yckzAppglQxService;

然后在主表中需要进行关联查询时,即又需要主表应用数据,又需要从表权限数据时

publicYckzAppgl confirmpeizhiquanxian(@RequestBody YckzAppgl yckzAppgl)

{//获取id

Long id =yckzAppgl.getId();//根据id获取编码

String appcode =yckzAppglService.selectYckzAppglById(id).getAppcode();//根据编码获取从表数据

List quanxianList =yckzAppglQxService.selectYckzAppglQxByCode(appcode);

YckzAppgl yckzAppglResult= newYckzAppgl ();

yckzAppglResult .setQxList(quanxianList );returnyckzAppglResult ;

}

首先根据传递的主表的id查询出主表的数据,获取主表的编码后去根据编码去关联表中获取权限表的id。

然后根据id去权限表中查询出权限的信息,将其赋值给主表的list。

mysql一对多增删改查_SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现...相关推荐

  1. SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现

    场景 业务中经常会用到一对多的数据库的设计与数据的增删改查的实现. 比如要实现一个对手机应用配置允许访问的权限的业务. app与权限就是一对多的关系.即一个app可以拥有多个权限. 注: 博客: ht ...

  2. asp连接mysql数据库增删查_【ASP】ASP对Access数据库的连接、增删改查及ASP的基本语法...

    本文讨论的是ASP,而不是Visual Studio写出来的.ASPX也就是ASP.NET. ASP不需要任何插件的支持,关键你是配置好WINDOWS的IIS服务器,把页面扔在上面执行就可以了. 不同 ...

  3. SpringBoot+MySql实现一对多再多对多的数据库的设计以及业务层增删改查的实现

    场景 SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  4. Mysql —— C语言链接mysql数据库,实现可以增删改查的角色权限登录系统

    /******************************************************************** * 标题:C语言链接mysql数据库,实现可以增删改查的角色 ...

  5. MySQL 学习二:高手必备!MySQL 增删改查高级命令大全硬核总结!

    文章目录 前言 一.连接到 MySQL 数据库 1.1.连接到本机上的 MySQL 1.2.连接到远程主机上的 MySQL 二.退出 MySQL 命令 三.修改 MySQL 密码 3.1.先给 roo ...

  6. Node连接MySQL数据库进行基本的增删改查操作(一看就会)

    Node连接MySQL数据库进行基本的增删改查操作(一看就会) ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ...

  7. 实现对mysql增删改查_Java语言实现对MySql数据库中数据的增删改查操作的代码

    简单说操作的步骤: 1.连接数据库 2.将SQL语句发送到数据库 3.执行SQL语句 这里举个例子: 在一个数据库中有个students表,表中有学号(Id),姓名(Name),性别(Sex),地址( ...

  8. 1-1 MySQL数据库的基本操作 【增删改查】

    1-1 MySQL数据库的基本操作 [增删改查] 一.基础操作 创建数据库 查看数据库 选择数据库 删除数据库 二.建立一个基础数据库 三.基本操作 外键约束与字段自增 数据的增删改 数据查询 数据排 ...

  9. (Java/JDBC)对MySQL数据库实现基础的增删改查操作(含源码)

    文章目录 前言 注(常用PreparedStatement方法) 源码展示 前言 实现数据库连接 → Java连接MySQL数据库(含源码) (实现简单的增删查改更改正确的SQL语句即可) 增:ins ...

最新文章

  1. Spring事务管理只对出现运行期异常进行回滚
  2. 移动端rem屏幕设置
  3. dev编译器:c++如何让其输出小数16.84,浮点数类型数据!
  4. 儿童二类疫苗是否有必要接种
  5. 奥鹏数据库应用系统设计下列关于php_[南开大学(本部)]《数据库应用系统设计》20春期末考核(参考答案)...
  6. 【翻译】QEMU内部机制:顶层概览
  7. C++ exception
  8. python中的内部函数和闭包函数
  9. python列表修改元素_python list 中修改元素
  10. java进阶08 GUI图形界面
  11. h3c GR5200路由器上如何设置公网ip可以访问
  12. 团体程序设计天梯赛-练习集 L1-002 打印沙漏
  13. apache+mysql+php的环境配置
  14. mysql 字符串用省略号_CSS截取字符串自动补充省略号
  15. DataAdapter对象填充数据集
  16. 《论文写作》课堂总结
  17. Splendor宝石游戏的策略分析
  18. APP设计邀请功能,用邀请链接还是邀请码比较好呢?
  19. 英语音标怎么发音 48个英语音标正确读法
  20. IIS6 + Resin3.1.x 的不爽之处

热门文章

  1. 64 求1+2+3+...+n(发散思维能力 )
  2. 课后作业-阅读任务-阅读笔记4
  3. 模仿u-boot的makefile结构
  4. 《信息安全系统设计基础》 实验五
  5. 射命丸文 (Standard IO)
  6. HDU 4190 Distributing Ballot Boxes【二分答案】
  7. flex和js进行参数传递
  8. 300+Jquery, CSS, MooTools 和 JS的导航菜单资源
  9. C# 根据中文得到全拼
  10. linux的常用操作——vim和vi