日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

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

發(fā)布時(shí)間:2025/3/19 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

場(chǎng)景

業(yè)務(wù)中經(jīng)常會(huì)用到一對(duì)多的數(shù)據(jù)庫(kù)的設(shè)計(jì)與數(shù)據(jù)的增刪改查的實(shí)現(xiàn)。

比如要實(shí)現(xiàn)一個(gè)對(duì)手機(jī)應(yīng)用配置允許訪(fǎng)問(wèn)的權(quán)限的業(yè)務(wù)。

app與權(quán)限就是一對(duì)多的關(guān)系。即一個(gè)app可以擁有多個(gè)權(quán)限。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號(hào)
霸道的程序猿
獲取編程相關(guān)電子書(shū)、教程推送與免費(fèi)下載。

實(shí)現(xiàn)

首先設(shè)計(jì)數(shù)據(jù)庫(kù)。要有一個(gè)app表、一個(gè)權(quán)限表、一個(gè)app與權(quán)限關(guān)聯(lián)表。

首先設(shè)計(jì)app表

?

這里是存儲(chǔ)的APP對(duì)象的一些屬性,即一對(duì)多中一的那端。

然后創(chuàng)建權(quán)限表

?

這里是存儲(chǔ)權(quán)限實(shí)體的一些屬性,即一對(duì)多中多的那一方。

以上兩個(gè)表的id都是主鍵并且是非空自增的。

?

然后還需要?jiǎng)?chuàng)建一個(gè)關(guān)聯(lián)表實(shí)現(xiàn)這種一對(duì)多的映射關(guān)系。

?

這里使用的是主表的app編碼用來(lái)跟從表的id進(jìn)行關(guān)聯(lián)。

為什么不用主表的id和從表的id進(jìn)行關(guān)聯(lián),因?yàn)樵趫?zhí)行插入時(shí),主表的app編碼是有點(diǎn)的,但是id設(shè)置是自增的,還沒(méi)有值,

所以用主表的編碼和從表的id進(jìn)行關(guān)聯(lián)。

比如app表中的數(shù)據(jù)有

?

權(quán)限表中的數(shù)據(jù)

?

那么映射表中的數(shù)據(jù)

?

以上映射表代表編碼為weixin的app對(duì)應(yīng)id為1的權(quán)限,編碼為qq的app對(duì)應(yīng)id為1和2的權(quán)限。

數(shù)據(jù)庫(kù)設(shè)計(jì)好之后就是對(duì)應(yīng)的實(shí)體類(lèi)以及相關(guān)的代碼這里使用代碼生成工具將主表app表和從表權(quán)限表以及之間的關(guān)聯(lián)表生成實(shí)體類(lèi)和相關(guān)代碼。

主表app表實(shí)體

public class YckzAppgl {private static final long serialVersionUID = 1L;/** id */private Long id;/** 應(yīng)用編碼 */private String appcode;/** 應(yīng)用名稱(chēng) */private String appname;/** 數(shù)據(jù)存儲(chǔ)路徑 */private String sjcclj;/** 應(yīng)用包名 */private String appbm;/*** 創(chuàng)建時(shí)間*/private Date cjsj;/*** 權(quán)限列表*/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();} }

這里除了用代碼生成工具生成的基本屬性外,還要添加一個(gè)從表權(quán)限的List

private List<YckzAppglQx> qxList;

這樣在進(jìn)行查詢(xún)主表數(shù)據(jù)時(shí)能將從表的權(quán)限數(shù)據(jù)進(jìn)行存儲(chǔ)。

從表的實(shí)體類(lèi)

public class YckzQuanxian extends BaseEntity {private static final long serialVersionUID = 1L;/** id */private Long id;/** 權(quán)限編碼 */private String qxcode;/** 權(quán)限名稱(chēng) */private String qxname;/** 權(quán)限包名 */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();} }

然后對(duì)這兩個(gè)表分別使用代碼生成工具生成Controller、Service、ServiceImpl、Mapper等相關(guān)代碼。

然后在主表對(duì)應(yīng)的Controller中,分別引入主表從表和關(guān)聯(lián)表對(duì)應(yīng)的Service接口層。

??? @Autowiredprivate IYckzAppglService yckzAppglService;@Autowiredprivate IYckzQuanxianService yckzQuanxianService;@Autowiredprivate IYckzAppglQxService yckzAppglQxService;

然后在主表中需要進(jìn)行關(guān)聯(lián)查詢(xún)時(shí),即又需要主表應(yīng)用數(shù)據(jù),又需要從表權(quán)限數(shù)據(jù)時(shí)

??? public YckzAppgl? confirmpeizhiquanxian(@RequestBody YckzAppgl yckzAppgl){//獲取idLong id = yckzAppgl.getId();//根據(jù)id獲取編碼String appcode = yckzAppglService.selectYckzAppglById(id).getAppcode();//根據(jù)編碼獲取從表數(shù)據(jù)List<YckzAppglQx> quanxianList = yckzAppglQxService.selectYckzAppglQxByCode(appcode);YckzAppgl? yckzAppglResult = new YckzAppgl? ();yckzAppglResult .setQxList(quanxianList );return yckzAppglResult ;}

首先根據(jù)傳遞的主表的id查詢(xún)出主表的數(shù)據(jù),獲取主表的編碼后去根據(jù)編碼去關(guān)聯(lián)表中獲取權(quán)限表的id。

然后根據(jù)id去權(quán)限表中查詢(xún)出權(quán)限的信息,將其賦值給主表的list。

?

總結(jié)

以上是生活随笔為你收集整理的SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。