SQL得邏輯
SQL中 OR條件左右只要有一個成立,就可以返回true結果,所以在和and使用得時候 ,OR必須要加上括號來使用。
SELECT * FROM actor WHERE actor_id > 10 AND (first_name LIKE '%A%' OR last_name LIKE '%A%');
SELECT * FROM actor WHERE actor_id > 10 AND first_name LIKE '%A%' OR last_name LIKE '%A%';
也因此在Mybatis-Plus 中QueryWrapper組裝中,也要注意這種情況。
queryWrapper.and(Wrapper -> Wrapper.like("first_name", "mama").or().like("last_name ","mama"));
queryWrapper.ge("actor_id",10);
// 等同於 WHERE actor_id > 10 AND (first_name LIKE '%A%' OR last_name LIKE '%A%');
queryWrapper.like("first_name", "mama").or().like("last_name ","mama");
queryWrapper.ge("actor_id",10);
// 等同於 WHERE actor_id > 10 AND first_name LIKE '%A%' OR last_name LIKE '%A%'; 這種寫法是錯誤得