一、QueryWrapper Like概述
QueryWrapper是Mybatis-Plus提供的一款強大的查詢構造器,在實際的開發中我們經常需要根據需求動態構造查詢條件,Mybatis-Plus的QueryWrapper提供了這樣一種便利的方式。AddressDao中的用法舉例如下:
public interface AddressDao extends BaseMapper<Address> { @Select("SELECT * FROM address ${ew.customSqlSegment}") List<Address> selectAll(@Param(Constants.WRAPPER) Wrapper<Address> wrapper); }
其中ew就是QueryWrapper,我們可以調用QueryWrapper的各個方法來動態構造SQL語句,customSqlSegment是Mybatis的內置變數,用來代表QueryWrapper所構造的WHERE condition 。我們可以通過傳遞QueryWrapper,使用各種Lambda表達式來構造各種查詢條件。QueryWrapper Like就是其中比較常用的方法之一。
二、QueryWrapper Like方法的使用
QueryWrapper Like方法可以用來構造LIKE條件,常用的方法有like、notLike、likeLeft、likeRight等。接下來我們通過一段代碼來詳細介紹這些方法的使用。
String name = "John"; String email = "John_@example.com"; QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.like("name", name) .notLike("email", email) .likeLeft("tel", "123") .likeRight("address", "street");
以上代碼通過QueryWrapper構建了一個查詢條件,其SQL語句如下:
SELECT * FROM user WHERE name LIKE '%John%' AND email NOT LIKE '%John_@example.com%' AND tel LIKE '123%' AND address LIKE '%street'
其中方法like和notLike用於普通的LIKE查詢,likeLeft方法則是表示like查詢時以給定值開頭,而likeRight則是以給定值結尾。這樣我們就可以通過靈活組合以上方法來構建自己所需的查詢條件。
三、QueryWrapper Like方法的注意事項
在使用QueryWrapper的Like方法時,我們需要注意以下幾點:
1、like、notLike、likeLeft、likeRight所接收的第一個參數都是實體屬性名,而非資料庫表列名。例如我們在User實體中有個屬性叫做userName,則我們需要寫成like(“user_name”, value)而不是like(“username”, value)。
public class User { private Long id; private String userName; }
2、like、notLike、likeLeft、likeRight所接收的第二個參數是String類型的值,在使用之前需要進行轉義。例如有些情況下我們需要模糊查詢帶有下劃線的字元串,此時我們需要將下劃線轉義,使用方法如下:
String userName = "de\\_john"; queryWrapper.like("user_name", userName);
此時生成的SQL查詢語句為:
SELECT * FROM user WHERE user_name LIKE '%de\_john%'
3、like、notLike、likeLeft、likeRight所接收的第二個參數可以是一個Lambda表達式,例如:
String name = "Jo"; String emailSuffix = "@example.com"; QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper .like(u -> u.getName(), name) .notLike(u -> u.getEmail(), emailSuffix);
以上代碼中,我們使用了Lambda表達式來構造查詢條件。其中like(u -> u.getName(), name)表示模糊查詢名字中帶有”Jo”的用戶,notLike(u -> u.getEmail(), emailSuffix)表示不查詢郵箱後綴為”@example.com”的用戶。
四、QueryWrapper Like方法的優勢
QueryWrapper Like方法的優勢在於其提供了一種非常靈活、快捷的方法來構造動態查詢條件,使得我們不需要手動編寫複雜的SQL查詢語句,既省去了大量的時間,又避免了由於拼寫錯誤等導致的語法錯誤。同時QueryWrapper的鏈式調用也使得代碼的可讀性大大提高,使得我們更容易讀懂、維護和優化我們的代碼。
五、QueryWrapper Like方法的局限
在使用QueryWrapper Like方法時需要注意它的一些局限,例如可能會受到資料庫的性能影響。如果要處理大量數據,可能會導致查詢性能下降,所以在使用QueryWrapper Like方法時應該注意優化查詢條件,減少不必要的查詢和優化表結構,提升查詢速度和效率。
六、小結
QueryWrapper Like是Mybatis-Plus提供的一款非常便利的動態查詢構造器方法之一,通過鏈式調用、Lambda表達式等實現靈活、快捷的動態查詢條件構造,且可讀性高,性能優秀。但需要注意其局限,避免影響查詢性能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197391.html