MyBatis-Plus 是 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,簡化開發、提高效率。在實際開發中,模糊查詢是非常常見的需求。本文將詳細介紹如何在 MyBatis-Plus 中指定字段進行模糊查詢。
QueryWrapper
進行模糊查詢QueryWrapper
是 MyBatis-Plus 提供的一個查詢條件構造器,可以方便地構建各種查詢條件。通過 QueryWrapper
,我們可以輕松實現指定字段的模糊查詢。
假設我們有一個 User
表,表結構如下:
CREATE TABLE user (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT,
email VARCHAR(100)
);
我們想要查詢 name
字段中包含 “張” 的所有用戶,可以使用如下代碼:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "張");
List<User> userList = userMapper.selectList(queryWrapper);
在這個例子中,like
方法用于構建模糊查詢條件,第一個參數是字段名,第二個參數是模糊查詢的值。
如果我們需要在多個字段上進行模糊查詢,可以使用 or
方法將多個條件連接起來。例如,我們想要查詢 name
或 email
字段中包含 “張” 的所有用戶:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "張").or().like("email", "張");
List<User> userList = userMapper.selectList(queryWrapper);
在某些情況下,我們可能希望模糊查詢忽略大小寫。MyBatis-Plus 提供了 likeRight
和 likeLeft
方法,分別表示右模糊查詢和左模糊查詢。例如:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeRight("name", "張");
List<User> userList = userMapper.selectList(queryWrapper);
likeRight("name", "張")
生成的 SQL 語句類似于 name LIKE '張%'
,表示查詢 name
字段以 “張” 開頭的記錄。
LambdaQueryWrapper
進行模糊查詢LambdaQueryWrapper
是 QueryWrapper
的 Lambda 表達式版本,可以通過 Lambda 表達式引用實體類的字段,避免硬編碼字段名。
繼續以 User
表為例,我們可以使用 LambdaQueryWrapper
進行模糊查詢:
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.like(User::getName, "張");
List<User> userList = userMapper.selectList(lambdaQueryWrapper);
在這個例子中,User::getName
通過 Lambda 表達式引用了 User
類的 name
字段,避免了硬編碼字段名。
同樣地,我們可以在多個字段上進行模糊查詢:
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.like(User::getName, "張").or().like(User::getEmail, "張");
List<User> userList = userMapper.selectList(lambdaQueryWrapper);
使用 LambdaQueryWrapper
也可以實現忽略大小寫的模糊查詢:
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.likeRight(User::getName, "張");
List<User> userList = userMapper.selectList(lambdaQueryWrapper);
在某些情況下,我們可能希望在實體類中直接定義模糊查詢的條件。MyBatis-Plus 提供了 @TableField
注解,可以用于指定字段的查詢條件。
在 User
實體類中,我們可以使用 @TableField
注解指定 name
字段的模糊查詢條件:
public class User {
private Long id;
@TableField(condition = SqlCondition.LIKE)
private String name;
private Integer age;
private String email;
// getters and setters
}
然后,我們可以直接使用 QueryWrapper
進行查詢:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "張");
List<User> userList = userMapper.selectList(queryWrapper);
在這個例子中,@TableField(condition = SqlCondition.LIKE)
注解指定了 name
字段的查詢條件為 LIKE
,因此在使用 like
方法時,MyBatis-Plus 會自動生成 name LIKE '%張%'
的 SQL 語句。
MyBatis-Plus 提供了多種方式來實現指定字段的模糊查詢,包括使用 QueryWrapper
、LambdaQueryWrapper
以及 @TableField
注解。開發者可以根據實際需求選擇合適的方式來實現模糊查詢,從而提高開發效率。
通過本文的介紹,相信你已經掌握了在 MyBatis-Plus 中指定字段進行模糊查詢的方法。在實際開發中,靈活運用這些方法,可以大大簡化代碼,提高開發效率。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。