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

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

生活随笔

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

javascript

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

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

場(chǎng)景

SpringBoot+MySql+ElementUI實(shí)現(xiàn)一對(duì)多的數(shù)據(jù)庫(kù)的設(shè)計(jì)以及增刪改查的實(shí)現(xiàn)

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107971394

上面講了app應(yīng)用對(duì)應(yīng)權(quán)限實(shí)現(xiàn)一對(duì)多的邏輯。

如果一對(duì)多多的那層再是一對(duì)多的話要怎樣設(shè)計(jì)。

比如白名單設(shè)計(jì),一個(gè)白名單可以包含多個(gè)手機(jī)app,而每個(gè)app又對(duì)應(yīng)多個(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í)現(xiàn)與應(yīng)用的一對(duì)多關(guān)聯(lián)。

添加白名單數(shù)據(jù)

?

然后設(shè)計(jì)與白名單一對(duì)多的app表

?

添加幾條數(shù)據(jù)

?

然后設(shè)計(jì)權(quán)限表

?

然后添加幾條權(quán)限表數(shù)據(jù)

?

然后怎樣將這三個(gè)表進(jìn)行關(guān)聯(lián),其中用到了兩個(gè)關(guān)聯(lián)表,首先是白名單與app應(yīng)用實(shí)現(xiàn)一對(duì)多的關(guān)聯(lián)

設(shè)計(jì)關(guān)聯(lián)表

?

通過(guò)白名單的編碼與app表的id進(jìn)行關(guān)聯(lián)

添加幾條關(guān)聯(lián)數(shù)據(jù)

?

然后是實(shí)現(xiàn)應(yīng)用表與權(quán)限表的一對(duì)多關(guān)聯(lián),設(shè)計(jì)關(guān)聯(lián)表

?

其實(shí)這里的設(shè)計(jì)可以只實(shí)現(xiàn)appid與權(quán)限id的關(guān)聯(lián),這樣的話就是用到兩個(gè)關(guān)聯(lián)表。

或者只用上面這一張關(guān)聯(lián)表實(shí)現(xiàn)白名單-應(yīng)用-權(quán)限的關(guān)聯(lián)。

具體根據(jù)自己情況選擇,這里為了避免數(shù)據(jù)錯(cuò)亂所以使用了兩個(gè)關(guān)聯(lián)表并且第二個(gè)關(guān)聯(lián)表也設(shè)計(jì)如上,

添加幾條關(guān)聯(lián)表數(shù)據(jù)

?

這樣關(guān)聯(lián)就代表白名單編號(hào)為001的對(duì)應(yīng)app的id為1和2的,而appid為1的又對(duì)應(yīng)權(quán)限id為1和2的。

然后使用代碼生成工具分別生成以上所有表的相關(guān)的代碼。

然后在實(shí)體類中添加關(guān)聯(lián)關(guān)系。

即白名單實(shí)體類中添加應(yīng)用的list,構(gòu)建出一對(duì)多的關(guān)系,在應(yīng)用的實(shí)體類中添加權(quán)限的list,構(gòu)建出一對(duì)多的關(guān)系。

白名單實(shí)體

public class YckzBaimingdan {private static final long serialVersionUID = 1L;/** id */private Long id;/** 白名單編號(hào) */private String bmdbh;/** 白名單名稱 */private String bmdname;/** 創(chuàng)建日期 */@JsonFormat(pattern = "yyyy-MM-dd")private Date cjrq;/** 創(chuàng)建人 */private String cjr;/**** 白名單中應(yīng)用列表*/private List<YckzBaimingdanApp> appList; }

省略get和set方法

應(yīng)用實(shí)體

public class YckzBaimingdanApp {private static final long serialVersionUID = 1L;/** id */private Long id;/** 白名單編號(hào) */private String bmdbh;/** app應(yīng)用id */private Long appid;/**** 名稱*/private String name;/**** 包名*/private String packagename;/**** 權(quán)限列表*/private List<YckzBaimingdanQuanxian> quanxianList; }

省略get和set方法

然后在新增白名單的接口方法中

??? public AjaxResult add(@RequestBody YckzBaimingdan yckzBaimingdan){//驗(yàn)證白名單編號(hào)是否存在int count = yckzBaimingdanService.isExistYckzBaimingdan(yckzBaimingdan.getBmdbh());if(count>0){return AjaxResult.error("該編號(hào)已經(jīng)存在");}else{//插入白名單表yckzBaimingdan.setCjrq(new Date());yckzBaimingdanService.insertYckzBaimingdan(yckzBaimingdan);//插入白名單-應(yīng)用表//必須有應(yīng)用列表List<YckzBaimingdanApp> appList = yckzBaimingdan.getAppList();for (YckzBaimingdanApp app:appList) {app.setBmdbh(yckzBaimingdan.getBmdbh());//必須有白名單編號(hào)和appidyckzBaimingdanAppService.insertYckzBaimingdanApp(app);//每個(gè)應(yīng)用必須有權(quán)限列表List<YckzBaimingdanQuanxian> quanxianList = app.getQuanxianList();for (YckzBaimingdanQuanxian quanxian:quanxianList) {quanxian.setBaimingdanbh(yckzBaimingdan.getBmdbh());quanxian.setAppid(app.getAppid());//插入白名單-權(quán)限表yckzBaimingdanQuanxianService.insertYckzBaimingdanQuanxian(quanxian);}}return AjaxResult.success("新增白名單成功");}}

首先驗(yàn)證白名單編號(hào)唯一,然后插入到白名單表中數(shù)據(jù),然后獲取應(yīng)用表的list,循環(huán)插入白名單的

編號(hào)和應(yīng)用的id,應(yīng)用id是前端通過(guò)請(qǐng)求應(yīng)用表數(shù)據(jù)獲取的id。然后在獲取每個(gè)應(yīng)用對(duì)應(yīng)的權(quán)限的list

再循環(huán)插入白名單-應(yīng)用-權(quán)限的關(guān)聯(lián)表。

這樣新增時(shí)只是新增一個(gè)或者兩個(gè)關(guān)聯(lián)表。

然后在進(jìn)行獲取白名單的詳細(xì)信息時(shí)

??? public AjaxResult getInfo(@PathVariable("id") Long id){//查詢出白名單主表YckzBaimingdan baimingdan = yckzBaimingdanService.selectYckzBaimingdanById(id);//查詢出應(yīng)用列表List<YckzBaimingdanApp> appList = yckzBaimingdanAppService.selectYckzBaimingdanAppListByBh(baimingdan.getBmdbh());for (YckzBaimingdanApp app:appList) {List<YckzBaimingdanQuanxian> quanxianList = yckzBaimingdanQuanxianService.selectYckzBaimingdanQuanxianListByBhAndId(baimingdan.getBmdbh(), app.getAppid());app.setQuanxianList(quanxianList);}baimingdan.setAppList(appList);return AjaxResult.success(baimingdan);}

根據(jù)id獲取白名單表的信息,再根據(jù)白名單的編號(hào)獲取應(yīng)用的list再循環(huán)應(yīng)用list,根據(jù)白名單編號(hào)和應(yīng)用id獲取權(quán)限的list,再分別將其賦值給對(duì)應(yīng)的主表的list,然后

將白名單主表對(duì)象返回。

在實(shí)現(xiàn)修改時(shí)

??? public AjaxResult edit(@RequestBody YckzBaimingdan yckzBaimingdan){//修改白名單-應(yīng)用表//必須有應(yīng)用列表List<YckzBaimingdanApp> appList = yckzBaimingdan.getAppList();for (YckzBaimingdanApp app:appList) {//每個(gè)應(yīng)用必須有權(quán)限列表List<YckzBaimingdanQuanxian> quanxianList = app.getQuanxianList();for (YckzBaimingdanQuanxian quanxian:quanxianList) {quanxian.setBaimingdanbh(yckzBaimingdan.getBmdbh());quanxian.setAppid(app.getAppid());//修改白名單-權(quán)限表yckzBaimingdanQuanxianService.updateYckzBaimingdanQuanxian(quanxian);}app.setBmdbh(yckzBaimingdan.getBmdbh());//必須有白名單編號(hào)和appidyckzBaimingdanAppService.updateYckzBaimingdanApp(app);}//修改白名單表yckzBaimingdanService.updateYckzBaimingdan(yckzBaimingdan);return AjaxResult.success("修改白名單成功");}

首先獲取白名單下的應(yīng)用列表然后循環(huán)獲取每一個(gè)下的權(quán)限列表,然后在循環(huán)中

先修改權(quán)限表,循環(huán)完之后再修改應(yīng)用表,再循環(huán)接受后修改白名單表。

更新時(shí)要采用逆序即從里向外的順序進(jìn)行修改,先修改多的那端再修改一的那端。

不然將一的那端修改后找不到對(duì)應(yīng)的多的那端的信息了。

修改的是兩個(gè)關(guān)聯(lián)表的數(shù)據(jù),不用修改應(yīng)用信息表和權(quán)限信息表。

然后在刪除時(shí)跟修改類似也是逆序的方式

??? public AjaxResult remove(@PathVariable Long[] ids){for (Long id:ids) {//查詢主表YckzBaimingdan baimingdan = yckzBaimingdanService.selectYckzBaimingdanById(id);//查詢出應(yīng)用列表List<YckzBaimingdanApp> appList1 = yckzBaimingdanAppService.selectYckzBaimingdanAppListByBh(baimingdan.getBmdbh());for (YckzBaimingdanApp app:appList1) {List<YckzBaimingdanQuanxian> quanxianList = yckzBaimingdanQuanxianService.selectYckzBaimingdanQuanxianListByBhAndId(baimingdan.getBmdbh(), app.getAppid());app.setQuanxianList(quanxianList);}baimingdan.setAppList(appList1);//獲取應(yīng)用列表List<YckzBaimingdanApp> appList = baimingdan.getAppList();for (YckzBaimingdanApp app:appList) {//每個(gè)應(yīng)用必須有權(quán)限列表List<YckzBaimingdanQuanxian> quanxianList = app.getQuanxianList();for (YckzBaimingdanQuanxian quanxian:quanxianList) {quanxian.setBaimingdanbh(baimingdan.getBmdbh());quanxian.setAppid(app.getAppid());//刪除白名單-權(quán)限表yckzBaimingdanQuanxianService.deleteYckzBaimingdanQuanxianById(quanxian.getId());}app.setBmdbh(baimingdan.getBmdbh());yckzBaimingdanAppService.deleteYckzBaimingdanAppById(app.getId());}yckzBaimingdanService.deleteYckzBaimingdanById(baimingdan.getId());}return AjaxResult.success("刪除白名單成功");}

?

總結(jié)

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

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

主站蜘蛛池模板: 在线中文字幕视频 | 成人性生交免费看 | 美女福利一区 | 影音先锋伦理片 | 91亚洲一线产区二线产区 | 亚洲福利视频一区二区三区 | 一本一道久久综合 | 国产精品51麻豆cm传媒 | 亚洲蜜桃av一区二区 | 国产精品制服丝袜 | 欧美性大战xxxxx久久久 | 亚洲奶汁xxxx哺乳期 | 天堂网av2018 | 亚洲色图2 | 欧美日韩精品在线视频 | 日韩毛片免费观看 | 精品福利三区3d卡通动漫 | 91啪国产| 久久丫精品 | 免费无毒av | 日本精品久久久久中文字幕 | 亲切的金子餐桌片段的金子 | 黄色网久久 | 青青国产视频 | 久久久涩 | 国产污在线观看 | sm在线看 | av在线黄色| 无码少妇一级AV片在线观看 | 欧美成人怡红院 | 黄色一级图片 | 伊人色综合网 | 国产精品情侣自拍 | 激情五月综合色婷婷一区二区 | 国产男女视频在线观看 | 亚洲性天堂 | 伊人一级 | h片在线播放 | 欧美性受xxxx| 在线观看不卡av | 日本美女一级片 | 成人精品网 | 国产精品黄色av | 成人颜色网站 | 丁香婷婷激情五月 | 久久最新免费视频 | 欧美男优| 激情网络 | 成人免费看片视频 | 日本亚洲天堂 | 日韩在线视频看看 | 在线观看av的网站 | 波多野吉衣在线观看视频 | 国产一区二区三区高清 | av爱爱网站| 日本一区二区三区在线视频 | 精品少妇人妻一区二区黑料社区 | 国产日韩片 | 色狠| 99热.com | 亚色在线视频 | 久草福利网 | 成人国产精品一区 | 夫の上司に犯波多野结衣853 | 日本免费一区二区三区 | 欧美日韩另类一区 | 日韩精品久久久久久久酒店 | 自拍偷拍激情视频 | 一级肉体全黄裸片 | 亚洲精品久久久久久久蜜桃臀 | 57pao成人国产永久免费视频 | 阿v视频免费在线观看 | 性开放淫合集 | 色亭亭 | 五月婷婷影院 | 999精品一区 | 97公开免费视频 | 大地资源二中文在线影视免费观看 | 成人黄色三级视频 | 九九天堂网 | 亚洲成av人片在线观看无码 | 国产亚洲av综合人人澡精品 | 国产免费专区 | 亚洲精品888 | 中国性xxx | 91精品免费 | 国产不卡视频在线播放 | 色中文字幕 | 日本一级大毛片a一 | 床上激情网站 | 精品久久国产视频 | 日韩欧美三级在线观看 | 超碰一区二区 | 国产精品网站免费 | 国产在线高潮 | 国产不卡在线视频 | a中文字幕 | 久久久www成人免费无遮挡大片 | 中国黄色三级 |