您好,登录后才能下订单哦!
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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。