中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis-plus如何實現多表查詢

發布時間:2021-07-22 14:23:51 來源:億速云 閱讀:1912 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關mybatis-plus如何實現多表查詢的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

java mybatis 多表查詢

簡介

實現簡單的實體類操作多表,  首先你的項目是使用了mybatis-plus 才可以使用

設計說明

  • 如何關聯表?

找第一張表注解為 TableId (mybatis-plus 注解)的屬性名, 到每二張表找同樣的屬性名, 如果沒找到,反過來找,如果還沒找到,挨個屬性找。以此類推,實現關聯的前提條件是 主從表的關聯例名必須一樣

// user 表
@TableId
private Integer userId
// address 表
@TableId
private Integer addressId
private Integer userId

使用說明

com.freedomen.multipselect 包放到你的項目中,使 com.freedomen.multipselect.mapper里的xml 要被掃描到,或手動配置, com.freedomen.multipselect.service也要被發現

//引入service
@Autowired
private MultipleService multipleService;
//表關聯, 關聯用戶表和地址表,查找 用戶表的所有字段和地址表的所有字段
MultipleSelect multipleSelect = MultipleSelect.newInstance("${1}", new User(), new Address());

multipleSelect
 .where("${0}")
 .like("userName", "張三");

multipleService.mulSelect(multipleSelect);

查找字段

//MultipleSelect.newInstance 的第一個參數是所要查找的字段
//${0} 或 ${user} 表是第一張表的所有字段 ${0}.userName或${user}.userName表示userName字段, 默認第一張表的字段全部都返回的。 ${}中間的參數可以是后面實體的下標,也可以是表名 如user、user_address

//下面是要訂單表的所有信息 和用戶的姓名與號碼 和地址
MultipleSelect.newInstance("${1}.userName,${1}.userPhone,${2}", new Orders(), new User(), new Address());

查找條件

  • eq: =

  • notEq: !=

  • like: LIKE (前置已經加了 '%')

  • between: between

  • and: 改變連接方式為 AND練級(默認)

  • or: 改變 連接方式為 OR

  • division:括號

  • in: IN

  • notIn: NOT IN

  • notLike: NOT LIKE

  • ...等等

//實例好 查找實體后可以操作實體
//注意: 如何實體內屬性有值 將會以 eq方式and連接做為where 條件
MultipleSelect multipleSelect = MultipleSelect.newInstance("${1}.userName,${1}.userPhone,${2}", new Orders(), new User(), new Address());

multipleSelect
 .where("${0}") //哪張表
 .eq("ordersId", 1) //并且 訂單id = 1
 .like("ordersName", "cmcc") //并且 訂單名稱 like ''%cmcc'
 .or() //改變后續操作關系為 OR, 默認為AND
 .notEq("orderSno", "123"); //或者 orderSno 不等于 '123'
 
multipleSelect
 .where("${1}") //哪張表接著用戶表 默認and連接 可以 .or()改為 OR
 .in("userId", [1, 2, 3]); // 并且userId in [1, 2, 3]
 
multipleSelect
 .where("${2}")
 .or()
 .like("adressDetails", "江蘇"); //或者 地址 like '江蘇'

multipleService.mulSelect(multipleSelect); //查詢

排序

//MultipleSelect.setOrderBy(...columns)
MultipleSelect.setOrderBy("${1}.ordersName desc", "${2}.userId asc", ...)

分頁

//MultipleSelect.setPage(pageNo, pageSize);
MultipleSelect.setPage(1, 15); //第一頁 每頁 15條

multipleService.mulSelect返回結果

//MultipleResult
/* 原型
 private List<Map<String, Object>> data; //結果數據
 private Integer pageNo;  //如果設置了分頁 會有
 private Integer pageSize;  //如果設置了分頁 會有
 private Integer total;  //如果設置了分頁 會有
*/

邏輯刪除

//默認是讀取 mybatis-plus 的 TableLogic 注解 0 未刪除,
//如果不是用 0 表示未刪除, 可以修改 MultipleSelect 的 setCustomWhere 方法中的下面這段中的 0 
 
if (logic != null)
 sb.append(" AND ")
 .append(te.getNickName())
 .append(".")
 .append(logic)
 .append(" = ")
 .append("0");

感謝各位的閱讀!關于“mybatis-plus如何實現多表查詢”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

拉萨市| 来凤县| 和顺县| 宁河县| 岗巴县| 惠安县| 陆丰市| 达拉特旗| 沅江市| 淅川县| 阿勒泰市| 乌兰浩特市| 莱西市| 隆子县| 扶绥县| 文水县| 淮滨县| 伊宁市| 丽水市| 体育| 罗田县| 新乐市| 青阳县| 沾益县| 开江县| 苍溪县| 沿河| 斗六市| 屯留县| 新巴尔虎左旗| 黄浦区| 永州市| 陆丰市| 德兴市| 大田县| 河北省| 合水县| 治县。| 阜城县| 隆德县| 汕头市|