查询Bool 为空 和 为false 的情况

查询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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值