在MyBatis-Plus中,如果你想使用LambdaQueryWrapper来查询status字段既不是null也不是空字符串的记录,你可以使用isNotNull方法来检查字段是否非null,然后使用and方法结合一个自定义的SQL条件来确保字段值不为空字符串。以下是如何实现这一点的示例代码:

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;

public class PdtEtcDeviceMangService implements IService<PdtEtcDeviceMang> {

    public List<PdtEtcDeviceMang> listDevicesWithNonNullAndNonEmptyStatus() {
        // 创建LambdaQueryWrapper实例
        LambdaQueryWrapper<PdtEtcDeviceMang> lqw = Wrappers.lambdaQuery();

        // 添加查询条件,查询status字段不是null且不为空字符串的记录
        lqw.isNotNull(PdtEtcDeviceMang::getStatus)
          .and(r -> r.apply("status != ''"));

        // 使用LambdaQueryWrapper进行查询
        return pdtEtcDeviceMangMapper.selectList(lqw);
    }
}

在这个示例中:

  • isNotNull(PdtEtcDeviceMang::getStatus) 确保status字段不是null
  • .and(r -> r.apply("status != ''")) 使用apply方法添加一个条件,确保status字段的值不为空字符串。这里使用了SQL原始语法,!= 是不等于的意思,'' 是空字符串。

请注意,apply方法允许你直接写入原始的SQL片段,但你需要确保这样做不会使你的应用程序容易受到SQL注入攻击,特别是如果SQL片段中包含用户输入的内容。

最后,使用pdtEtcDeviceMangMapper.selectList(lqw)执行查询并返回满足条件的记录列表。确保pdtEtcDeviceMangMapper是你的Mapper接口,并且已经通过MyBatis-Plus正确配置。如果你需要对查询结果进行分页处理,可以使用selectPage方法替代selectList方法,并传入一个Page对象。

此外,如果你的字段status在数据库中是可为null的,并且你希望查询出所有非空字符串的记录,包括那些null值的记录,你应该使用ne方法代替isNotNull

lqw.ne(PdtEtcDeviceMang::getStatus, "");

这将查询出所有status字段值不等于空字符串的记录,无论它们是实际的非空字符串还是null值。