mybatis-plus怎么指定字段模糊查询

发布时间:2022-04-28 10:19:54 作者:iii
来源:亿速云 阅读:1117

MyBatis-Plus 怎么指定字段模糊查询

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。在实际开发中,模糊查询是非常常见的需求。本文将详细介绍如何在 MyBatis-Plus 中指定字段进行模糊查询。

1. 使用 QueryWrapper 进行模糊查询

QueryWrapper 是 MyBatis-Plus 提供的一个查询条件构造器,可以方便地构建各种查询条件。通过 QueryWrapper,我们可以轻松实现指定字段的模糊查询。

1.1 基本用法

假设我们有一个 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 方法用于构建模糊查询条件,第一个参数是字段名,第二个参数是模糊查询的值。

1.2 多字段模糊查询

如果我们需要在多个字段上进行模糊查询,可以使用 or 方法将多个条件连接起来。例如,我们想要查询 nameemail 字段中包含 “张” 的所有用户:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张").or().like("email", "张");
List<User> userList = userMapper.selectList(queryWrapper);

1.3 忽略大小写模糊查询

在某些情况下,我们可能希望模糊查询忽略大小写。MyBatis-Plus 提供了 likeRightlikeLeft 方法,分别表示右模糊查询和左模糊查询。例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeRight("name", "张");
List<User> userList = userMapper.selectList(queryWrapper);

likeRight("name", "张") 生成的 SQL 语句类似于 name LIKE '张%',表示查询 name 字段以 “张” 开头的记录。

2. 使用 LambdaQueryWrapper 进行模糊查询

LambdaQueryWrapperQueryWrapper 的 Lambda 表达式版本,可以通过 Lambda 表达式引用实体类的字段,避免硬编码字段名。

2.1 基本用法

继续以 User 表为例,我们可以使用 LambdaQueryWrapper 进行模糊查询:

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.like(User::getName, "张");
List<User> userList = userMapper.selectList(lambdaQueryWrapper);

在这个例子中,User::getName 通过 Lambda 表达式引用了 User 类的 name 字段,避免了硬编码字段名。

2.2 多字段模糊查询

同样地,我们可以在多个字段上进行模糊查询:

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.like(User::getName, "张").or().like(User::getEmail, "张");
List<User> userList = userMapper.selectList(lambdaQueryWrapper);

2.3 忽略大小写模糊查询

使用 LambdaQueryWrapper 也可以实现忽略大小写的模糊查询:

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.likeRight(User::getName, "张");
List<User> userList = userMapper.selectList(lambdaQueryWrapper);

3. 使用注解进行模糊查询

在某些情况下,我们可能希望在实体类中直接定义模糊查询的条件。MyBatis-Plus 提供了 @TableField 注解,可以用于指定字段的查询条件。

3.1 基本用法

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 语句。

4. 总结

MyBatis-Plus 提供了多种方式来实现指定字段的模糊查询,包括使用 QueryWrapperLambdaQueryWrapper 以及 @TableField 注解。开发者可以根据实际需求选择合适的方式来实现模糊查询,从而提高开发效率。

通过本文的介绍,相信你已经掌握了在 MyBatis-Plus 中指定字段进行模糊查询的方法。在实际开发中,灵活运用这些方法,可以大大简化代码,提高开发效率。

推荐阅读:
  1. SQL查询按指定字段排序
  2. MyBatis模糊查询

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatisplus

上一篇:Python+FuzzyWuzzy怎么实现模糊匹配

下一篇:Android界面一键变灰开发深色适配模式编程的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》