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。

推薦閱讀: