一、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