菜單管理系統的整體架構
1.Menu 菜單表
2.role 角色表
3.role_menu 角色菜 單關聯表(多對多?)
要找role_id為3的角色能用哪個菜單:
SELECT *FROM sys_menu a LEFT JOIN sys_role_menu b
ON a.menu_id= b.menu_id WHERE role_id=3
拆分開就是
4.user 用戶表
5.user_role?用戶角色關聯表 (多對多)
前后端數據庫是如何交互的
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Ajax
瀏覽器------>ngix<-------------->Tomcat------->DB
jdbc的工作原理
即java Database connectivity
其中有一個getConnection(url,user,password)來提供給DriverManager管理,來存儲到一個Connection對象
其中有三個類Connection? statement? ResultSet
statement是用來實現SQL語句
ResultSet中存儲著鍵值對,比如id:1? ?name:張三? id:2? name:李四.....
int id = resultSet.getInt(id);
String name = resultSet.getString(name);persion.setId(id);
persion.setName(name);
它是用來把數據庫的內容存儲到對象中
聯表查詢顯示圖書類型下拉菜單
以在圖書管理系統的圖書index.vue中顯示圖書類型的下拉菜單為例
1.首先,我們寫一個下拉菜單select
<el-form-item label="圖書類型"><el-select v-model="form.typeId" placeholder="請選擇圖書類型"><el-option v-for="typelist in typeLists" :key="typelist.id" :label="typelist.name":value="typelist.id"></el-option></el-select>
</el-form-item>
其中form.typeId的typeId所對應的是Book類里的typeId字段,當表單提交時,前端會將?form
?對象的數據(包括?typeId
)傳遞給后端。
2.我們用到了typelists列表,所以要在data里定義一個數組typelists[]
data(){
typelists[]
}
3.在method中寫一個動態獲取typeList的函數
getBooktypeList() {listBooktype1().then(response => {// console.info(response.data)this.typeLists = response.data;})}
把listBooktype1()得到的響應賦值給typeLists
4.在created中初始化函數getBooktypeList()
created() {this.getBooktypeList()},
5.實現?listBooktype1()
在booktype.json獲取圖書類型內容
export function listBooktype1() {return request({url: '/book/booktype/typeList',method: 'get',})
}
url和后端BookTypeController的mapping對應
6.查詢符合條件的圖書類型封裝到AjaxResult
?對象中供前端獲取
@PreAuthorize("@ss.hasPermi('book:booktype:list')")@GetMapping("/typeList")public AjaxResult typeList(BookType bookType){startPage();List<BookType> list = bookTypeService.selectBookTypeList(bookType);AjaxResult j = AjaxResult.success(list);return j;}
7.在book類里添加bookType屬性和typeId屬性,并提供set,get方法
private Integer typeId;
private BookType bookType;
8.在前端顯示bookType.name
<el-table-column label="圖書類型" align="center" prop="bookType.name"/>
9.在Mapper中修改sql語句
在查詢圖書數據的時候?
select a.id aid,a.name aname,author,a.num anum,price, b.name bname,type_id
from t_book a
LEFT JOIN t_book_type b
ON a.type_id = b.id
記得要查詢type_id來默認顯示當前的圖書類型在修改菜單的下拉框內
因為更改了別名所以要更換resultMap的內容
<resultMap type="Book" id="BookResult">
<!-- 對象 數據庫--><result property="id" column="aid" /><result property="name" column="aname" /><result property="author" column="author" /><result property="num" column="anum" /><result property="price" column="price" /><result property="typeId" column="type_id" /><result property="bookType.name" column="bname" /><result property="bookType.id" column="type_id" />
</resultMap>
因為改了別名,所以對應的要修改查詢中其它字段的名字?
10.增和改要添加關于type_id的內容