優化Spring JPA項目——LambdaQueryWrapper和QueryMapper

一、LambdaQueryWrapper小標題

LambdaQueryWrapper是mybatis-plus提供的一個查詢構造器,通過它可以封裝查詢條件,使得查詢更加簡單方便,尤其在複雜查詢時特別有用,下面我們來詳細介紹LambdaQueryWrapper的使用方法。

1、LambdaQueryWrapper的創建

LambdaQueryWrapper的創建非常簡單,只需要用到靜態方法lambdaQueryWrapper方法即可:


LambdaQueryWrapper<UserEntity> wrapper = new LambdaQueryWrapper<>();

上述代碼表示定義了一個用於UserEntity的LambdaQueryWrapper對象。LambdaQueryWrapper<>表示泛型,用於指定查詢的實體類。

2、LambdaQueryWrapper的基本使用

通過LambdaQueryWrapper對象可以構建SQL查詢條件:


wrapper.eq(UserEntity::getName, "admin")
       .like(UserEntity::getEmail, "example");

上述代碼依次表示設置查詢條件為:name等於admin,且email包含example。eq方法表示等於,like方法表示包含。括弧中的參數是Lambda表達式,表示實體類的屬性和對應的取值。

更多LambdaQueryWrapper的操作請查閱官方文檔。

二、QueryMapper小標題

QueryMapper是一種自定義的SQL查詢方法,通過它可以在介面中定義SQL查詢方法。下面我們來詳細介紹QueryMapper的使用方法。

1、QueryMapper的創建

QueryMapper的創建非常簡單,只需要定義一個介面,並在介面方法上使用@Query註解即可:


public interface UserMapper extends BaseMapper<UserEntity> {
    @Query("select * from user where name like #{name}")
    List<UserEntity> selectByName(@Param("name") String name);
}

上述代碼表示定義了一個返回UserEntity列表的selectByName方法,查詢條件為name包含指定參數。@Query註解的參數為自定義的SQL查詢語句,其中#{name}表示查詢條件中的name參數,@Param(“name”)表示方法參數中的name參數,兩者對應。

2、QueryMapper的使用

使用QueryMapper查詢非常簡單,只需要通過MapperFactoryBean獲取對應的Mapper對象,並調用定義的查詢方法即可:

@Autowired
private UserMapper userMapper;

public void testSelectByName() {
    List<UserEntity> users = userMapper.selectByName("admin");
    Assert.assertEquals(1, users.size());
}

上述代碼表示通過userMapper的selectByName方法查詢名字為admin的用戶,斷言查詢結果數量為1。

三、LambdaQueryWrapper和QueryMapper聯合使用小標題

在實際開發中,我們往往需要使用LambdaQueryWrapper和QueryMapper聯合查詢資料庫,下面以查詢用戶列表為例,演示使用LambdaQueryWrapper和QueryMapper的聯合使用方法:


public interface UserMapper extends BaseMapper<UserEntity> {
    @Query("select * from user where 1=1")
    List<UserEntity> selectListWrapper(@Param(Constants.WRAPPER) Wrapper<UserEntity> wrapper);
}

上述代碼中,方法名為selectListWrapper,該方法使用了QueryMapper定義的方法,同時傳入了一個Wrapper參數。Wrapper<UserEntity>表示LambdaQueryWrapper,Constants.WRAPPER表示Wrapper的標識,這樣就實現了LambdaQueryWrapper和QueryMapper的聯合使用。

調用示例代碼:


LambdaQueryWrapper<UserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserEntity::getName, "admin")
       .like(UserEntity::getEmail, "example");
List<UserEntity> users = userMapper.selectListWrapper(wrapper);

上述代碼表示定義了一個LambdaQueryWrapper,設置查詢條件為:name等於admin,且email包含example。然後通過userMapper的selectListWrapper方法查詢用戶列表。

四、總結

LambdaQueryWrapper和QueryMapper是mybatis-plus提供的兩個強大的工具,聯合使用可以實現更為靈活和便捷的查詢操作。它們的使用方法非常簡單,但是在實際開發中卻非常實用和方便。

原創文章,作者:SPCZF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372876.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
SPCZF的頭像SPCZF
上一篇 2025-04-25 15:26
下一篇 2025-04-25 15:26

相關推薦

發表回復

登錄後才能評論