QueryWrapper模糊查詢匹配多個字段

平常使用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)
);

這樣的話就可以拼接多個模糊匹配的字段,防止出錯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章