查询Bool 为空 和 为false 的情况

    技术2022-07-11  153

    查询Bool 为空 和 为false 的情况

    记录下遇到的问题(二)

    前情提要:数据库的bool型字段有true,false,null 三种情况,现要查询为null和false的情况。使用ExampleMatcher没写出来

    使用Specification

    Specification specification = (root, query, builder) -> { List<Predicate> list = new ArrayList<>(); if (instanceDto.getBoolObject!=null){ Predicate predicate; if(instanceDto.getBoolObject) { predicate = builder.isTrue(root.get("boolObject")); }else { predicate = builder.or(builder.isFalse(root.get("boolObject")),builder.isNull(root.get("boolObject"))); } list.add(predicate); } Predicate[] o = new Predicate[list.size()]; Predicate andPredicate = builder.and(list.toArray(o)); return andPredicate; };

    对应的SQL类似这样的0_0

    SELECT count( tableName.aimField ) AS col_0_0_ FROM tableName WHERE tableName.aimField = 0 OR tableName.aimField IS NULL

    新手上路,还请多多指教,目前只会用,不了解具体的而实现。

    Processed: 0.022, SQL: 9