MyBatis-plus 模糊查询的使用
MyBatis-plus是一个基于MyBatis的简化版框架,它提供了很多便捷的API,使得在操作数据库时无需手动编写复杂的SQL语句。在实际开发中,模糊查询是一种常见的查询方式,用于查找包含特定字符或模式的数据。MyBatis-plus提供了简单易用的模糊查询功能。 在MyBatis-plus中,模糊查询主要通过`QueryWrapper`类来实现。`QueryWrapper`是一个条件构造器,可以方便地构建复杂的查询条件。以下是如何使用`QueryWrapper`进行模糊查询的步骤: 1. 你需要创建一个`QueryWrapper`实例,并指定你所操作的实体类。例如,如果你有一个名为`FykUser`的实体类,你可以这样创建: ```java QueryWrapper<FykUser> queryWrapper = new QueryWrapper<>(); ``` 2. 然后,你可以调用`queryWrapper`的各种方法来添加模糊查询条件。`like`方法是最常用的模糊查询方法,它接受三个参数:一个布尔表达式、字段名和字段值。当布尔表达式为`true`时,才会将条件加入到SQL语句中。例如,如果你想根据用户的名字进行模糊查询,你可以这样写: ```java if (StringUtils.isNotBlank(user.getName())) { queryWrapper.like("NAME", user.getName()); } ``` 这里的`like`方法会生成如`NAME LIKE '%王%'`这样的SQL片段,表示查询名字中包含"王"的所有用户。 3. 对于更复杂的模糊查询,比如只在字段值的左侧或右侧添加通配符,你可以使用`likeLeft`或`likeRight`方法。例如: ```java queryWrapper.likeLeft("EMAIL", user.getEmail()); ``` 这将生成`EMAIL LIKE '%example@example.com'`的查询条件,匹配以`example@example.com`开头的电子邮件地址。 除了`like`方法,`QueryWrapper`还提供了其他的条件查询方法,如`eq`(等于)、`ne`(不等于)、`gt`(大于)、`lt`(小于)、`ge`(大于等于)、`le`(小于等于)、`between`(介于两者之间)等。这些方法都可以帮助你构建各种复杂的查询逻辑。 在示例代码中,展示了两种不同的模糊查询方法: - **模糊查询方法一** 使用`EntityWrapper`配合`like`方法,构建了一个OR条件的模糊查询。例如,查询名字中包含"海"的用户,无论是在`firstname`还是`lastname`字段: ```java List<UserInfo> userInfos = userInfoMapper.selectList( new EntityWrapper<>(userInfo).like("firstname", name).or().like("lastname", name)); ``` 这将生成如下的SQL语句: ```sql SELECT * FROM users WHERE (firstname LIKE '%海%' OR lastname LIKE '%海%') ``` - **模糊查询方法二** 是通过传递整个对象进行模糊查询,所有与`userInfo`对象中非空的属性都会被用来构建查询条件。这种方式适用于需要根据多个字段进行模糊查询的情况,但需要注意,它会将所有非空属性视为查询条件,而不仅仅是模糊查询的字段。 在实际应用中,可以根据具体需求灵活选择和组合这些方法,以达到预期的查询效果。MyBatis-plus的模糊查询功能极大地简化了开发过程,提高了开发效率。