QueryWrapper遍历删除
时间: 2024-09-09 08:10:30 浏览: 17
QueryWrapper是MyBatis Plus中提供的一种高级SQL构建工具,它允许开发者通过链式调用的方式构造复杂的SQL语句。当需要遍历并删除数据时,通常结合with删除操作一起使用。
例如,如果你想根据某个条件批量删除数据,可以这样做:
```java
List<Integer> ids = ... // 获取需要删除的数据id列表
Integer count = BaseMapper通用Mapper名::queryWrapper
.selectOneColumn("id IN ({})", ids) // 使用QueryWrapper构建SQL查询id列表
.orElse(0); // 确保有数据时获取到列的数量
if (count > 0) {
queryWrapper.in("id", ids).delete(); // 遍历删除,ids作为IN条件
}
```
这里,`queryWrapper.in("id", ids)`会生成类似"DELETE FROM table WHERE id IN (?, ?, ?)"的SQL语句,并一次性删除所有匹配的行。如果`count`为0,则说明没有符合条件的数据,所以不会执行删除操作。
相关问题
QueryWrapper 去重
QueryWrapper是MyBatis-Plus中的一个条件构造器,用于构建SQL查询条件。要实现QueryWrapper的去重功能,可以使用distinct方法。
下面是一个示例代码,演示了如何使用QueryWrapper进行去重查询:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
public class Demo {
public static void main(String[] args) {
UserMapper userMapper = new UserMapper();
QueryWrapper<User> queryWrapper = Wrappers.query();
queryWrapper.select("name").distinct(true);
List<User> userList = userMapper.selectList(queryWrapper);
for (User user : userList) {
System.out.println(user.getName());
}
}
}
```
在上面的代码中,我们创建了一个QueryWrapper对象,并调用select方法指定要查询的字段,然后调用distinct方法设置去重。最后,通过selectList方法执行查询,并遍历结果集打印出去重后的name字段。
QueryWrapper in 用法
QueryWrapper是MyBatis-Plus框架中的一个查询条件构造器,用于构建复杂的查询条件。其中,in方法用于指定一个字段的取值范围,可以传入一个List作为参数。下面是两种使用QueryWrapper的in方法的例子:
1. 使用List<String>作为参数:
```java
List<String> typeList = new ArrayList<>();
typeList.add("type1");
typeList.add("type2");
QueryWrapper<Type> queryWrapper = new QueryWrapper<>();
queryWrapper.in("type", typeList);
```
2. 使用对象集合,并通过遍历获取单个值组成新的List作为参数:
```java
List<Type> typeList = typeService.selectById(id); // 查询到对象集合
List<String> typeValueList = new ArrayList<>();
typeList.forEach(item -> {
typeValueList.add(item.getType()); // 遍历集合取值
});
QueryWrapper<Type> queryWrapper = new QueryWrapper<>();
queryWrapper.in("type", typeValueList);
```