当前位置:主页 > 生活知识 >

mybatis的or用法(mybatis中and写在哪)

  • 生活知识
  • 2025-05-09 08:33
  • 来源:www.renliuw.cn
  • 生活知识

Mybatis-Plus QueryWrapper中的or与and的巧妙运用

在开发过程中,我们经常遇到需要根据多个条件进行数据库查询的情况。最近,我在使用mybatis-plus的QueryWrapper组件时,遇到了一个关于or和and使用的问题。

我们的基础查询条件很明确,就是要根据用户的ID来筛选数据:

```java

queryWrapper.eq("user_id", userInfo.getUserId);

```

在此基础上,我们需要根据用户的名字和其他管理员名字进行模糊查询。这里就涉及到了or的使用。在刚开始的时候,我使用了如下的代码:

```java

if(StringUtils.isNotBlank(name)) {

queryWrapper.like("user_name", name)

.or()

.like("user_admin_name", name);

}

```

当这两个条件同时存在时,我发现查询结果并不符合预期,出现了一些非当前角色的数据。经过检查,我发现生成的SQL语句是这样的:

```sql

where user_id=39139 and user_name like 39%叶%39 or user_admin_name like 39%叶%39

```

这样的写法导致只要满足其中一个条件,就会返回结果。这显然不是我们想要的结果。于是我开始寻找解决方案,并最终在QueryWrapper组件中找到了and()的使用方式。使用and()可以将多个条件组合在一起,确保只有同时满足这些条件时才会返回结果。修改后的代码如下:

```java

queryWrapper.and(wq -> {

wq.like("user_name", name)

.or()

.like("user_admin_name", name);

});

```

生成的SQL语句会变成这样:

```sql

where user_id=39139 and (user_name like 39%叶%39 or user_admin_name like 39%叶%39)

```

这样的写法更符合我们的预期,能够准确地筛选出符合条件的数据。如果你在开发中需要打印SQL语句以便于调试,可以在mybatis的配置中进行设置,使其在控制台输出SQL语句。这样你就可以直观地看到生成的SQL语句是否正确。

正确使用mybatis-plus的QueryWrapper组件中的or和and,可以帮助我们更灵活地构建查询条件,提高开发效率。希望这篇文章能帮助你解决在使用QueryWrapper时遇到的问题。

下一篇:没有了

无痛人流