平常使用QueryWrapper進行查詢的時候會用到QueryWrapper.like進行模糊查詢,但是這樣只能匹配一個字段,如果想模糊匹配多個字段呢?
錯誤的方式:
wrapper.like("name", keywords);
wrapper.or();
wrapper.like("address", keywords);
這樣的話會出現錯誤,這個or不會給加上括號,如果存在and條件的話,就會出現以下情況
SELECT * FROM Student WHERE del_status='0' AND name LIKE '%張%' OR address LIKE '%張%'
缺少括號 在部分場景下就會出現錯誤
實際上我們實際需要的情況是下面這樣的
SELECT * FROM Student WHERE del_status='0' AND (name LIKE '%張%' OR address LIKE '%張%')
改進方法是直接使用Lambda表達式
userWrapper.and(
wrapper ->
wrapper.like("name", keywords).or().like("address", keywords)
);
這樣的話就可以拼接多個模糊匹配的字段,防止出錯