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

