MP實戰系列 十二 之封裝方法詳解 續二

2022-02-03 10:58:28 字數 4352 閱讀 9718

繼續mp實戰系列(十一)之封裝方法詳解(續一)這篇文章之後。

此次要講的是關於查詢。

查詢是用的比較多的,查詢很重要,好的查詢,加上索引如魚得水,不好的查詢加再多索引也是無濟於事。

1.selectbyid()方法

演示示例:

userentity user = ud.selectbyid(33);

system.out.println(user.getemail());

簡單的說明:

如果是在mybatis中,需要再對應的xml編寫這樣的sql select column1,column2... from table where id=#

這裡的id指的是主鍵。根據主鍵獲取對應的資訊。

selectbyid的原始碼如下:

/**

* * 根據 id 查詢* *

* @param

id 主鍵id

* @return

t

*/t selectbyid(serializable id);

2.selectone()

演示示例:

system.out.println(user.getemail());

對應的sql 是 select * from user where user_id=#

system.out.println(user.getemail());

3.selectbymap()

這個方法主要是針對集合的,而不是單個資料查詢。

演示**如下:

mapcolumnmap = new hashmap();

columnmap.put("username", "test");

list

list =ud.selectbymap(columnmap);

for(userentity userentity : list)

相當於的sql是 select * from user where username=#

put中的和相當於#佔位符。

源**如下:

/**

* * 查詢(根據 columnmap 條件)* *

* @param

columnmap 表字段 map 物件

* @return

list

*/list

selectbymap(mapcolumnmap);

4.selectlist()

顧名思義,也是查詢集合資料

演示**如下:

list

for(userentity userentity : list)

只要符合你的業務需要,都能使用。

方法名很容易理解。

原始碼如下:

/**

* * 查詢列表* *

* @param

@link

* @return

*/list

5.selectcount()

演示**如下:

system.out.println(lines);

查詢符合條件的數量,通常情況下用於分頁查詢總數。

源**如下:

/*** *

* @param

* @return

int

*/6.selectmap

演示**如下:

userentity user = new

userentity();

mapmap.put("user", user);

for(string u : map.keyset())

這是通過map的形式遍歷,不過只能獲取一條資料。

源**如下:

/*** *

* @param

@link

* @return

map*/

map這種使用場景的話,就目前我而言,沒有用到過。

當然,我也一再強調,沒有用到,並不代表沒用。

7.selectmaps

演示**如下:

userentity user = new

userentity();

mapmap = new hashmap();

map.put("user", user);

list

list.add(map);

for (mapmaps : list)

主要用於查詢集合資料

原始碼如下:

/**

* * 查詢列表* *

* @param

@link

* @return

*/list

關於map相關的一系列原始碼,我會再後續章節詳細講解。

此次主要講的是mybatis plus的常用和包含的方法

8.selectpage

演示示例1:

listrecords = ud.selectlist(null

);

int lines = ud.selectcount(null

); page

page = new page();

page.setlimit(0);

page.setsize(10);

page.setrecords(records);

page.setcurrent(1);

page.settotal(lines);

system.out.println(ud.selectpage(page));

演示示例2:

listrecords = ud.selectlist(null

);

int lines = ud.selectcount(null

); page

page = new page();

page.setlimit(0);

page.setsize(10);

page.setrecords(records);

page.setcurrent(1);

page.settotal(lines);

主要是用於翻頁查詢,可以理解為分頁查詢

非常易懂

limit索引從幾開始

size每頁顯示多少條資料

record集合資料放置

current當前頁

total總數

原始碼如下:

/**

* * 翻頁查詢* *

* @param

page 翻頁物件

* @return

*/page

selectpage(pagepage);

/**

* * 翻頁查詢* *

* @param

page 翻頁物件

* @param

@link

* @return

*/page

9.selectobj

演示**如下:

system.out.println(obj);

返回的結果是該使用者對應的id

原始碼如下:

/*** *

* @param

@link

* @return

object

*/10.selectobjs

演示**如下:

list

for(object object : obj)

selectobj返回符合條件的一條資料,該selectobjs返回全部符合條件的資料

原始碼如下:

/** * **

@param

* @return

list

*/list

小結:其實查詢還有幾個,不過那幾個我不是特別理解,所有就沒有列出來了,上述列出的除了倒數兩個不常用,其他或多或少十分常用。

如果你專案最初開發,使用的持久層為mybatis plus,你可以參考我的這篇文章mp實戰系列(六)之**生成器講解

直接通過**生成器開發,一次性生成所有實體、dao、service及其實現類和xml檔案。絕對比mybatis的逆向工程要簡潔好用的多。

通過mybatis plus,你的開發效率,我相信可以提高70%或者80%。我公司目前採用這個,同事們的開發效率提高了很多。專案進展也比較快。

當然,我希望我以後能更深入的掌握mybatis plus的原理或者mybatis也行。因為mybatis plus就是從mybatis衍生出來的。

MP實戰系列 十九 之批量新增

批量操作在實際開發中也應用非常多,例如批量下發優惠券 批量新增使用者等。以mybatis為例,通常實現批量操作,有這麼幾種方式?第一,單條插入sql語句,進行for迴圈遍歷,基準條件是根據前端傳過的陣列長度而定,如果傳了四個引數過來,也就是長度為4,代表遍歷4次 也就是執行四次插入 這種方式不太建議...

MP實戰系列 十五 之執行分析外掛程式

sql 執行分析 目前只支援 mysql 5.6.3 以上版本 作用是分析 處理 delete update 語句,防止小白或者惡意 delete update 全表操作!這裡我引用mybatis plus官方文件所說的。為什麼需要執行分析外掛程式?實際開發中,雖然我們可以根據資料庫許可權分給對應的...

MP實戰系列 十六 之效能分析外掛程式

效能分析 用於輸出每條 sql 語句及其執行時間。雖然使用阿里的druid連線池可以完成這個目的,但是,我們一般認為,目前的元件能夠達到這個目的,盡量使用目前的元件,因為修改配置和引入第三方庫是需要消耗效能的。很久使用我們沒有這種便利的開發工具來測試效能,比如以mysql為例,我們就使用explai...