javascript
SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现
場景
業務中經常會用到一對多的數據庫的設計與數據的增刪改查的實現。
比如要實現一個對手機應用配置允許訪問的權限的業務。
app與權限就是一對多的關系。即一個app可以擁有多個權限。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
首先設計數據庫。要有一個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 class YckzAppgl {private static final long serialVersionUID = 1L;/** id */private Long id;/** 應用編碼 */private String appcode;/** 應用名稱 */private String appname;/** 數據存儲路徑 */private String sjcclj;/** 應用包名 */private String appbm;/*** 創建時間*/private Date cjsj;/*** 權限列表*/private List<YckzAppglQx> qxList;public List<YckzAppglQx> getQxList() {return qxList;}public void setQxList(List<YckzAppglQx> qxList) {this.qxList = qxList;}public int getOffset() {return offset;}public void setOffset(int offset) {this.offset = offset;}public int getPageNum() {return pageNum;}public void setPageNum(int pageNum) {this.pageNum = pageNum;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public Date getCjsj() {return cjsj;}public void setCjsj(Date cjsj) {this.cjsj = cjsj;}public void setId(Long id){this.id = id;}public Long getId(){return id;}public void setAppcode(String appcode){this.appcode = appcode;}public String getAppcode(){return appcode;}public void setAppname(String appname){this.appname = appname;}public String getAppname(){return appname;}public void setSjcclj(String sjcclj){this.sjcclj = sjcclj;}public String getSjcclj(){return sjcclj;}public void setAppbm(String appbm){this.appbm = appbm;}public String getAppbm(){return appbm;}@Overridepublic String 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<YckzAppglQx> qxList;這樣在進行查詢主表數據時能將從表的權限數據進行存儲。
從表的實體類
public class YckzQuanxian extends BaseEntity {private static final long serialVersionUID = 1L;/** id */private Long id;/** 權限編碼 */private String qxcode;/** 權限名稱 */private String qxname;/** 權限包名 */private String qxbm;//是否勾選private Boolean sfgx;public Boolean getSfgx() {return sfgx;}public void setSfgx(Boolean sfgx) {this.sfgx = sfgx;}public void setId(Long id){this.id = id;}public Long getId(){return id;}public void setQxcode(String qxcode){this.qxcode = qxcode;}public String getQxcode(){return qxcode;}public void setQxname(String qxname){this.qxname = qxname;}public String getQxname(){return qxname;}public void setQxbm(String qxbm){this.qxbm = qxbm;}public String getQxbm(){return qxbm;}@Overridepublic String 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接口層。
??? @Autowiredprivate IYckzAppglService yckzAppglService;@Autowiredprivate IYckzQuanxianService yckzQuanxianService;@Autowiredprivate IYckzAppglQxService yckzAppglQxService;然后在主表中需要進行關聯查詢時,即又需要主表應用數據,又需要從表權限數據時
??? public YckzAppgl? confirmpeizhiquanxian(@RequestBody YckzAppgl yckzAppgl){//獲取idLong id = yckzAppgl.getId();//根據id獲取編碼String appcode = yckzAppglService.selectYckzAppglById(id).getAppcode();//根據編碼獲取從表數據List<YckzAppglQx> quanxianList = yckzAppglQxService.selectYckzAppglQxByCode(appcode);YckzAppgl? yckzAppglResult = new YckzAppgl? ();yckzAppglResult .setQxList(quanxianList );return yckzAppglResult ;}首先根據傳遞的主表的id查詢出主表的數據,獲取主表的編碼后去根據編碼去關聯表中獲取權限表的id。
然后根據id去權限表中查詢出權限的信息,將其賦值給主表的list。
?
總結
以上是生活随笔為你收集整理的SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ElementUI中Transfer穿梭
- 下一篇: SpringBoot+MySql实现一对