mysql一对多增删改查_SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现...
場景
業務中經常會用到一對多的數據庫的設計與數據的增刪改查的實現。
比如要實現一個對手機應用配置允許訪問的權限的業務。
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实现一对多的数据库的设计以及增删改查的实现...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql按字段同步_MySQL同步(一
- 下一篇: android checkbox监听另一