MyBatisPlus中怎么取消注入逻辑删除的SQL?

如果MyBatisPlus配置了逻辑删除的话,所有查询语句都会默认加上一句WHERE del_flag=0这样的SQL。

想问一下如何取消添加这一句话。比如一个配置了逻辑删除的实体类User,可能在某个业务查询的时候希望查出所有不管是否被删除的数据,这个时候怎么应该怎么配置QueryWrapper?


回答:

既然它默认是加上了WHERE del_flag=0那你就拼接一个AND条件del_flag=1就能实现拿到所有数据了吧


回答:

你可以参考一下,下面的处理方法:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

@Service

public class UserService {

@Autowired

private UserMapper userMapper;

public List<User> getAllUsers() {

QueryWrapper<User> queryWrapper = new QueryWrapper<>();

User user = new User();

user.setDelFlag(null); // 取消逻辑删除过滤

queryWrapper.setEntity(user);

return userMapper.selectList(queryWrapper);

}

}

自定义的 SqlSegment,以下是一种方法:

你再试试先自定义一个 SqlSegment 类,继承 AbstractWrapper 类:

import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;

import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;

public class CustomWrapper<T> extends AbstractWrapper<T, String, CustomWrapper<T>> {

public CustomWrapper(T entity, MergeSegments mergeSegments) {

super(entity, mergeSegments);

}

@Override

protected String columnToString(String column) {

return column;

}

@Override

protected String getKey(String column, Object val) {

return column;

}

}

然后,在UserService 中使用自定义的 CustomWrapper:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

@Service

public class UserService {

@Autowired

private UserMapper userMapper;

public List<User> getAllUsers() {

CustomWrapper<User> customWrapper = new CustomWrapper<>(null, null);

customWrapper.eq("id", 1); // 添加查询条件,例如:WHERE id = 1

return userMapper.selectList(customWrapper);

}

}

这样应该就好了

以上是 MyBatisPlus中怎么取消注入逻辑删除的SQL? 的全部内容, 来源链接: utcz.com/p/945142.html

回到顶部