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