Mybatis Plus select 實現隻查詢部分字段
Mybatis Plus select 查詢部分字段
Mybatis Plus select語句默認查詢所有字段,如需要指定字段查詢,則需使用 QueryWrapper的select方法。
select
select(String... sqlSelect) select(Predicate<TableFieldInfo> predicate) select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
設置查詢字段
說明:
以上方法分為兩類。
第二類方法為:過濾查詢字段(主鍵除外),入參不包含 class 的調用前需要wrapper內的entity屬性有值! 這兩類方法重復調用以最後一次為準
例:指定查詢主鍵,名字,年齡字段
select("id", "name", "age")
例: 查詢以test開頭的屬性
select(i ‐> i.getProperty().startsWith("test"))
例:查詢User對象中出除manager_id和create_time外其它所有字段的數據
select(User.class, info ‐> !info.getColumn().equals("manager_id") && !info.getColumn().equals("create_time"))
MyBatis-Plus之select、delete
一、Mybatis-Plus之查詢操作
1、查詢操作常用API
根據ID查詢測試代碼如下:
//測試根據ID查詢 @Test public void testSelectById(){ User user = userMapper.selectById(2L); System.out.println(user); }
測試結果如下:
批量查詢測試代碼如下:
//測試批量查詢 @Test public void testSelectByBatchIds(){ List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3)); users.forEach(System.out::println); }
測試結果如下:
使用map進行條件查詢測試代碼如下:
//按條件查詢之使用map操作 @Test public void testSelectByMap(){ Map map = new HashMap(); map.put("name","哈利油"); map.put("age",18); List list = userMapper.selectByMap(map); list.forEach(System.out::println); }
測試結果如下:
2、分頁查詢
分頁在項目裡使用得十分多,平時一般是使用pageHelpr插件進行分頁,還可以使用原始的limit進行分頁;MP其實內置瞭分頁插件,使用步驟如下:
2.1、在配置類裡註冊分頁插件
//註冊分頁插件 @Bean public PaginationInterceptor paginationInterceptor(){ return new PaginationInterceptor(); }
2.2、直接使用MP內置的Page對象進行分頁,測試代碼如下
@Test public void testPage(){ //參數1:當前頁,參數2:頁面大小 Page<User> page = new Page<>(1,5); //用於排序 page.setDesc("id"); IPage<User> userIPage = userMapper.selectPage(page, null); userIPage.getRecords().forEach(System.out::println); System.out.println(userIPage.getTotal()); }
測試結果如下:
二、Mybatis-Plus之刪除操作
1、物理刪除操作常用API
根據ID刪除測試代碼如下:
//測試刪除 @Test public void testDeleteById(){ userMapper.deleteById(1L); }
測試結果如下:
根據ID批量刪除測試代碼如下:
//通過id批量刪除 @Test public void testDeleteBatchId(){ userMapper.deleteBatchIds(Arrays.asList(2L,3L)); }
測試結果如下:
使用map進行條件刪除測試代碼如下:
@Test public void testDeleteMap(){ Map map = new HashMap(); map.put("name","哈利油"); userMapper.deleteByMap(map); }
測試結果如下:
2、邏輯刪除
在工作中有時需要使用到邏輯刪除,邏輯刪除即數據在數據庫裡沒有被移除,而是通過一個變量來讓它失效;一般管理員可以查看被邏輯刪除的數據,這樣可防止數據的丟失,類似於回收站功能
MP邏輯刪除使用步驟如下:
2.1、在數據庫裡增加deleted字段
2.2、在實體類對應的屬性上加上@TableLogic註解
2.3、在配置類裡註冊邏輯刪除組件
//註冊邏輯刪除組件 @Bean public ISqlInjector sqlInjector(){ return new LogicSqlInjector(); }
2.4、在application.properties文件裡配置已刪除跟未刪除用什麼來表示
mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0
2.5、測試邏輯刪除
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Mybatis-plus如何查詢表中指定字段(不查詢全部字段)
- Mybatis-Plus select不列出全部字段的方法
- springboot整合mybatis-plus實現多表分頁查詢的示例代碼
- Mybatis中的@Select、foreach用法
- MyBatisPlus PaginationInterceptor分頁插件的使用詳解