Commit 61cfd0d63bd991ca6d694805029efe6c9de083a4
1 parent
643f5349
1.PredicatesBuilder in条件表达式修正
Showing
1 changed file
with
222 additions
and
222 deletions
src/main/java/com/bsth/entity/search/PredicatesBuilder.java
| 1 | -package com.bsth.entity.search; | ||
| 2 | - | ||
| 3 | -import org.joda.time.DateTime; | ||
| 4 | - | ||
| 5 | -import javax.persistence.criteria.CriteriaBuilder; | ||
| 6 | -import javax.persistence.criteria.Path; | ||
| 7 | -import javax.persistence.criteria.Predicate; | ||
| 8 | -import java.text.NumberFormat; | ||
| 9 | -import java.text.ParseException; | ||
| 10 | -import java.text.SimpleDateFormat; | ||
| 11 | -import java.util.ArrayList; | ||
| 12 | -import java.util.Calendar; | ||
| 13 | -import java.util.Date; | ||
| 14 | -import java.util.List; | ||
| 15 | - | ||
| 16 | -/** | ||
| 17 | - * | ||
| 18 | - * @ClassName: PredicatesBuilder | ||
| 19 | - * @author PanZhao | ||
| 20 | - * @date 2016年3月16日 下午4:05:07 | ||
| 21 | - * | ||
| 22 | - */ | ||
| 23 | -public class PredicatesBuilder { | ||
| 24 | - | ||
| 25 | - /** | ||
| 26 | - * Number转换器 | ||
| 27 | - */ | ||
| 28 | - private static NumberFormat nf; | ||
| 29 | - | ||
| 30 | - static{ | ||
| 31 | - nf = NumberFormat.getInstance(); | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | - public static Predicate eq(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 35 | - Class<?> leftType = expression.getJavaType(); | ||
| 36 | - Class<?> rightType = object.getClass(); | ||
| 37 | - | ||
| 38 | - if(Date.class.isAssignableFrom(leftType) && | ||
| 39 | - String.class.isAssignableFrom(rightType)){ | ||
| 40 | - DateTime dateTime = new DateTime(object); | ||
| 41 | - return cb.equal(expression, dateTime.toDate()); | ||
| 42 | - } | ||
| 43 | - else { | ||
| 44 | - return cb.equal(expression, object); | ||
| 45 | - } | ||
| 46 | - | ||
| 47 | - /*if (Number.class.isAssignableFrom(leftType) && | ||
| 48 | - (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number == Number/String | ||
| 49 | - return cb.equal(expression, object); | ||
| 50 | - } else if (String.class.isAssignableFrom(leftType) && | ||
| 51 | - (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String == String/Number | ||
| 52 | - return cb.equal(expression, object); | ||
| 53 | - } else if (Boolean.class.isAssignableFrom(leftType) && | ||
| 54 | - Boolean.class.isAssignableFrom(rightType)) { | ||
| 55 | - return cb.equal(expression, object); | ||
| 56 | - } else if (Date.class.isAssignableFrom(leftType) && | ||
| 57 | - Date.class.isAssignableFrom(rightType)) { // Date == Date | ||
| 58 | - return cb.equal(expression, object); | ||
| 59 | - } else if (Date.class.isAssignableFrom(leftType) && | ||
| 60 | - String.class.isAssignableFrom(rightType)) { // Date == String | ||
| 61 | - DateTime dateTime = new DateTime(object); | ||
| 62 | - return cb.equal(expression, dateTime.toDate()); | ||
| 63 | - } else { | ||
| 64 | - throw new RuntimeException("eq 不支持类型组合:" + expression.getJavaType() + "==" + object.getClass()); | ||
| 65 | - }*/ | ||
| 66 | - } | ||
| 67 | - | ||
| 68 | - public static Predicate ne(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 69 | - return cb.notEqual(expression, object); | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - public static Predicate in(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 73 | - String[] obj=object.toString().split(","); | ||
| 74 | - List<String> list=new ArrayList<String>(); | ||
| 75 | - for(int i=0;i<obj.length;i++){ | ||
| 76 | - list.add(obj[i]); | ||
| 77 | - } | ||
| 78 | - return cb.in(expression).value(list); | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - | ||
| 82 | - public static Predicate ins(CriteriaBuilder cb,Path<?> expression, List<String> list){ | ||
| 83 | - return cb.in(expression).value(list); | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - public static Predicate gt(CriteriaBuilder cb,Path<Number> expression, Object object){ | ||
| 87 | - try { | ||
| 88 | - return cb.gt(expression, nf.parse(object.toString())); | ||
| 89 | - } catch (ParseException e) { | ||
| 90 | - e.printStackTrace(); | ||
| 91 | - return null; | ||
| 92 | - } | ||
| 93 | - } | ||
| 94 | - | ||
| 95 | - public static Predicate ge(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 96 | - Class<?> leftType = expression.getJavaType(); | ||
| 97 | - Class<?> rightType = object.getClass(); | ||
| 98 | - | ||
| 99 | - if (Number.class.isAssignableFrom(leftType) && | ||
| 100 | - (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number >= Number/String | ||
| 101 | - return cb.ge((Path<Number>) expression, (Number) object); | ||
| 102 | - } else if (String.class.isAssignableFrom(leftType) && | ||
| 103 | - (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String >= String/Number | ||
| 104 | - return cb.greaterThanOrEqualTo((Path<String>) expression, (String) object); | ||
| 105 | - } else if (Date.class.isAssignableFrom(leftType) && | ||
| 106 | - Date.class.isAssignableFrom(rightType)) { // Date >= Date | ||
| 107 | - return cb.greaterThanOrEqualTo((Path<Date>) expression, (Date) object); | ||
| 108 | - } else if (Date.class.isAssignableFrom(leftType) && | ||
| 109 | - String.class.isAssignableFrom(rightType)) { // Date >= String | ||
| 110 | - DateTime dateTime = new DateTime(object); | ||
| 111 | - return cb.greaterThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); | ||
| 112 | - } else if (long.class.isAssignableFrom(leftType) && | ||
| 113 | - String.class.isAssignableFrom(rightType)) { // Long >= String | ||
| 114 | - return cb.greaterThanOrEqualTo((Path<Long>) expression, Long.valueOf(object+"")); | ||
| 115 | - } else { | ||
| 116 | - throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass()); | ||
| 117 | - } | ||
| 118 | - } | ||
| 119 | - | ||
| 120 | - public static Predicate lt(CriteriaBuilder cb,Path<Number> expression, Object object){ | ||
| 121 | - try { | ||
| 122 | - return cb.lt(expression, nf.parse(object.toString())); | ||
| 123 | - } catch (ParseException e) { | ||
| 124 | - e.printStackTrace(); | ||
| 125 | - return null; | ||
| 126 | - } | ||
| 127 | - } | ||
| 128 | - | ||
| 129 | - public static Predicate le(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 130 | - Class<?> leftType = expression.getJavaType(); | ||
| 131 | - Class<?> rightType = object.getClass(); | ||
| 132 | - | ||
| 133 | - | ||
| 134 | - if (Number.class.isAssignableFrom(leftType) && | ||
| 135 | - (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number <= Number/String | ||
| 136 | - return cb.le((Path<Number>) expression, (Number) object); | ||
| 137 | - } else if (String.class.isAssignableFrom(leftType) && | ||
| 138 | - (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String <= String/Number | ||
| 139 | - return cb.lessThanOrEqualTo((Path<String>) expression, (String) object); | ||
| 140 | - } else if (Date.class.isAssignableFrom(leftType) && | ||
| 141 | - Date.class.isAssignableFrom(rightType)) { // Date <= Date | ||
| 142 | - return cb.lessThanOrEqualTo((Path<Date>) expression, (Date) object); | ||
| 143 | - } else if (Date.class.isAssignableFrom(leftType) && | ||
| 144 | - String.class.isAssignableFrom(rightType)) { // Date <= String | ||
| 145 | - DateTime dateTime = new DateTime(object); | ||
| 146 | - return cb.lessThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); | ||
| 147 | - }else if (long.class.isAssignableFrom(leftType) && | ||
| 148 | - String.class.isAssignableFrom(rightType)) { // Long <= String | ||
| 149 | - return cb.lessThanOrEqualTo((Path<Long>) expression, Long.valueOf(object + "") ); | ||
| 150 | - } else { | ||
| 151 | - throw new RuntimeException("le 不支持类型组合:" + expression.getJavaType() + "<=" + object.getClass()); | ||
| 152 | - } | ||
| 153 | - } | ||
| 154 | - | ||
| 155 | - public static Predicate prefixLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 156 | - return cb.like(expression, object.toString() + "%"); | ||
| 157 | - } | ||
| 158 | - | ||
| 159 | - public static Predicate prefixNotLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 160 | - return cb.notLike(expression, object.toString() + "%"); | ||
| 161 | - } | ||
| 162 | - | ||
| 163 | - public static Predicate suffixLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 164 | - return cb.like(expression, "%" + object.toString()); | ||
| 165 | - } | ||
| 166 | - | ||
| 167 | - public static Predicate suffixNotLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 168 | - return cb.notLike(expression, "%" + object.toString()); | ||
| 169 | - } | ||
| 170 | - | ||
| 171 | - public static Predicate like(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 172 | - return cb.like(expression, "%" + object.toString() + "%"); | ||
| 173 | - } | ||
| 174 | - | ||
| 175 | - public static Predicate notLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 176 | - return cb.notLike(expression, "%" + object.toString() + "%"); | ||
| 177 | - } | ||
| 178 | - | ||
| 179 | - public static Predicate isNull(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 180 | - return cb.isNull(expression); | ||
| 181 | - } | ||
| 182 | - | ||
| 183 | - public static Predicate isNotNull(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 184 | - return cb.isNotNull(expression); | ||
| 185 | - } | ||
| 186 | - | ||
| 187 | - public static Predicate isf(CriteriaBuilder cb,Path<Boolean> expression, Object object){ | ||
| 188 | - return cb.isFalse(expression); | ||
| 189 | - } | ||
| 190 | - | ||
| 191 | - public static Predicate ist(CriteriaBuilder cb,Path<Boolean> expression, Object object){ | ||
| 192 | - return cb.isTrue(expression); | ||
| 193 | - } | ||
| 194 | - | ||
| 195 | - public static Predicate date(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 196 | - Date time = null; | ||
| 197 | - try { | ||
| 198 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||
| 199 | - time = sdf.parse(object.toString()); | ||
| 200 | - } catch (Exception e) { | ||
| 201 | - e.printStackTrace(); | ||
| 202 | - } | ||
| 203 | - return cb.equal(expression, time); | ||
| 204 | - } | ||
| 205 | - | ||
| 206 | - public static Predicate dateEq(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 207 | - Predicate predicate = null; | ||
| 208 | - try { | ||
| 209 | - DateTime dateTime = new DateTime(object); | ||
| 210 | - Date startTime = dateTime.toDate();//设置起始时间 | ||
| 211 | - Calendar c = Calendar.getInstance(); | ||
| 212 | - c.setTime(startTime); | ||
| 213 | - c.add(Calendar.DAY_OF_MONTH, 1); | ||
| 214 | - // 设置结束时间,起始时间为结束时间加1天 | ||
| 215 | - Date endTime = c.getTime(); | ||
| 216 | - predicate = cb.between((Path<Date>) expression,startTime,endTime); | ||
| 217 | - } catch (Exception e) { | ||
| 218 | - e.printStackTrace(); | ||
| 219 | - } | ||
| 220 | - return predicate; | ||
| 221 | - } | ||
| 222 | -} | 1 | +package com.bsth.entity.search; |
| 2 | + | ||
| 3 | +import org.apache.poi.ss.formula.functions.T; | ||
| 4 | +import org.joda.time.DateTime; | ||
| 5 | + | ||
| 6 | +import javax.persistence.criteria.CriteriaBuilder; | ||
| 7 | +import javax.persistence.criteria.Path; | ||
| 8 | +import javax.persistence.criteria.Predicate; | ||
| 9 | +import java.text.NumberFormat; | ||
| 10 | +import java.text.ParseException; | ||
| 11 | +import java.text.SimpleDateFormat; | ||
| 12 | +import java.util.*; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * | ||
| 16 | + * @ClassName: PredicatesBuilder | ||
| 17 | + * @author PanZhao | ||
| 18 | + * @date 2016年3月16日 下午4:05:07 | ||
| 19 | + * | ||
| 20 | + */ | ||
| 21 | +public class PredicatesBuilder { | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * Number转换器 | ||
| 25 | + */ | ||
| 26 | + private static NumberFormat nf; | ||
| 27 | + | ||
| 28 | + static{ | ||
| 29 | + nf = NumberFormat.getInstance(); | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + public static Predicate eq(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 33 | + Class<?> leftType = expression.getJavaType(); | ||
| 34 | + Class<?> rightType = object.getClass(); | ||
| 35 | + | ||
| 36 | + if(Date.class.isAssignableFrom(leftType) && | ||
| 37 | + String.class.isAssignableFrom(rightType)){ | ||
| 38 | + DateTime dateTime = new DateTime(object); | ||
| 39 | + return cb.equal(expression, dateTime.toDate()); | ||
| 40 | + } | ||
| 41 | + else { | ||
| 42 | + return cb.equal(expression, object); | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + /*if (Number.class.isAssignableFrom(leftType) && | ||
| 46 | + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number == Number/String | ||
| 47 | + return cb.equal(expression, object); | ||
| 48 | + } else if (String.class.isAssignableFrom(leftType) && | ||
| 49 | + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String == String/Number | ||
| 50 | + return cb.equal(expression, object); | ||
| 51 | + } else if (Boolean.class.isAssignableFrom(leftType) && | ||
| 52 | + Boolean.class.isAssignableFrom(rightType)) { | ||
| 53 | + return cb.equal(expression, object); | ||
| 54 | + } else if (Date.class.isAssignableFrom(leftType) && | ||
| 55 | + Date.class.isAssignableFrom(rightType)) { // Date == Date | ||
| 56 | + return cb.equal(expression, object); | ||
| 57 | + } else if (Date.class.isAssignableFrom(leftType) && | ||
| 58 | + String.class.isAssignableFrom(rightType)) { // Date == String | ||
| 59 | + DateTime dateTime = new DateTime(object); | ||
| 60 | + return cb.equal(expression, dateTime.toDate()); | ||
| 61 | + } else { | ||
| 62 | + throw new RuntimeException("eq 不支持类型组合:" + expression.getJavaType() + "==" + object.getClass()); | ||
| 63 | + }*/ | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + public static Predicate ne(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 67 | + return cb.notEqual(expression, object); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + public static Predicate in(CriteriaBuilder cb, Path<?> expression, Object object) { | ||
| 71 | + String[] obj = object.toString().split(","); | ||
| 72 | + | ||
| 73 | + return ins(cb, expression, Arrays.asList(obj)); | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + | ||
| 77 | + public static Predicate ins(CriteriaBuilder cb, Path<?> expression, List<String> list) { | ||
| 78 | + CriteriaBuilder.In<Object> in = cb.in(expression); | ||
| 79 | + for(int i = 0; i < list.size(); i++){ | ||
| 80 | + in.value(list.get(i)); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + return in; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + public static Predicate gt(CriteriaBuilder cb,Path<Number> expression, Object object){ | ||
| 87 | + try { | ||
| 88 | + return cb.gt(expression, nf.parse(object.toString())); | ||
| 89 | + } catch (ParseException e) { | ||
| 90 | + e.printStackTrace(); | ||
| 91 | + return null; | ||
| 92 | + } | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + public static Predicate ge(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 96 | + Class<?> leftType = expression.getJavaType(); | ||
| 97 | + Class<?> rightType = object.getClass(); | ||
| 98 | + | ||
| 99 | + if (Number.class.isAssignableFrom(leftType) && | ||
| 100 | + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number >= Number/String | ||
| 101 | + return cb.ge((Path<Number>) expression, (Number) object); | ||
| 102 | + } else if (String.class.isAssignableFrom(leftType) && | ||
| 103 | + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String >= String/Number | ||
| 104 | + return cb.greaterThanOrEqualTo((Path<String>) expression, (String) object); | ||
| 105 | + } else if (Date.class.isAssignableFrom(leftType) && | ||
| 106 | + Date.class.isAssignableFrom(rightType)) { // Date >= Date | ||
| 107 | + return cb.greaterThanOrEqualTo((Path<Date>) expression, (Date) object); | ||
| 108 | + } else if (Date.class.isAssignableFrom(leftType) && | ||
| 109 | + String.class.isAssignableFrom(rightType)) { // Date >= String | ||
| 110 | + DateTime dateTime = new DateTime(object); | ||
| 111 | + return cb.greaterThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); | ||
| 112 | + } else if (long.class.isAssignableFrom(leftType) && | ||
| 113 | + String.class.isAssignableFrom(rightType)) { // Long >= String | ||
| 114 | + return cb.greaterThanOrEqualTo((Path<Long>) expression, Long.valueOf(object+"")); | ||
| 115 | + } else { | ||
| 116 | + throw new RuntimeException("ge 不支持类型组合:" + expression.getJavaType() + ">=" + object.getClass()); | ||
| 117 | + } | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + public static Predicate lt(CriteriaBuilder cb,Path<Number> expression, Object object){ | ||
| 121 | + try { | ||
| 122 | + return cb.lt(expression, nf.parse(object.toString())); | ||
| 123 | + } catch (ParseException e) { | ||
| 124 | + e.printStackTrace(); | ||
| 125 | + return null; | ||
| 126 | + } | ||
| 127 | + } | ||
| 128 | + | ||
| 129 | + public static Predicate le(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 130 | + Class<?> leftType = expression.getJavaType(); | ||
| 131 | + Class<?> rightType = object.getClass(); | ||
| 132 | + | ||
| 133 | + | ||
| 134 | + if (Number.class.isAssignableFrom(leftType) && | ||
| 135 | + (Number.class.isAssignableFrom(rightType) || String.class.isAssignableFrom(rightType))) { // Number <= Number/String | ||
| 136 | + return cb.le((Path<Number>) expression, (Number) object); | ||
| 137 | + } else if (String.class.isAssignableFrom(leftType) && | ||
| 138 | + (String.class.isAssignableFrom(rightType) || Number.class.isAssignableFrom(rightType))) { // String <= String/Number | ||
| 139 | + return cb.lessThanOrEqualTo((Path<String>) expression, (String) object); | ||
| 140 | + } else if (Date.class.isAssignableFrom(leftType) && | ||
| 141 | + Date.class.isAssignableFrom(rightType)) { // Date <= Date | ||
| 142 | + return cb.lessThanOrEqualTo((Path<Date>) expression, (Date) object); | ||
| 143 | + } else if (Date.class.isAssignableFrom(leftType) && | ||
| 144 | + String.class.isAssignableFrom(rightType)) { // Date <= String | ||
| 145 | + DateTime dateTime = new DateTime(object); | ||
| 146 | + return cb.lessThanOrEqualTo((Path<Date>) expression, dateTime.toDate()); | ||
| 147 | + }else if (long.class.isAssignableFrom(leftType) && | ||
| 148 | + String.class.isAssignableFrom(rightType)) { // Long <= String | ||
| 149 | + return cb.lessThanOrEqualTo((Path<Long>) expression, Long.valueOf(object + "") ); | ||
| 150 | + } else { | ||
| 151 | + throw new RuntimeException("le 不支持类型组合:" + expression.getJavaType() + "<=" + object.getClass()); | ||
| 152 | + } | ||
| 153 | + } | ||
| 154 | + | ||
| 155 | + public static Predicate prefixLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 156 | + return cb.like(expression, object.toString() + "%"); | ||
| 157 | + } | ||
| 158 | + | ||
| 159 | + public static Predicate prefixNotLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 160 | + return cb.notLike(expression, object.toString() + "%"); | ||
| 161 | + } | ||
| 162 | + | ||
| 163 | + public static Predicate suffixLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 164 | + return cb.like(expression, "%" + object.toString()); | ||
| 165 | + } | ||
| 166 | + | ||
| 167 | + public static Predicate suffixNotLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 168 | + return cb.notLike(expression, "%" + object.toString()); | ||
| 169 | + } | ||
| 170 | + | ||
| 171 | + public static Predicate like(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 172 | + return cb.like(expression, "%" + object.toString() + "%"); | ||
| 173 | + } | ||
| 174 | + | ||
| 175 | + public static Predicate notLike(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 176 | + return cb.notLike(expression, "%" + object.toString() + "%"); | ||
| 177 | + } | ||
| 178 | + | ||
| 179 | + public static Predicate isNull(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 180 | + return cb.isNull(expression); | ||
| 181 | + } | ||
| 182 | + | ||
| 183 | + public static Predicate isNotNull(CriteriaBuilder cb,Path<String> expression, Object object){ | ||
| 184 | + return cb.isNotNull(expression); | ||
| 185 | + } | ||
| 186 | + | ||
| 187 | + public static Predicate isf(CriteriaBuilder cb,Path<Boolean> expression, Object object){ | ||
| 188 | + return cb.isFalse(expression); | ||
| 189 | + } | ||
| 190 | + | ||
| 191 | + public static Predicate ist(CriteriaBuilder cb,Path<Boolean> expression, Object object){ | ||
| 192 | + return cb.isTrue(expression); | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + public static Predicate date(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 196 | + Date time = null; | ||
| 197 | + try { | ||
| 198 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | ||
| 199 | + time = sdf.parse(object.toString()); | ||
| 200 | + } catch (Exception e) { | ||
| 201 | + e.printStackTrace(); | ||
| 202 | + } | ||
| 203 | + return cb.equal(expression, time); | ||
| 204 | + } | ||
| 205 | + | ||
| 206 | + public static Predicate dateEq(CriteriaBuilder cb,Path<?> expression, Object object){ | ||
| 207 | + Predicate predicate = null; | ||
| 208 | + try { | ||
| 209 | + DateTime dateTime = new DateTime(object); | ||
| 210 | + Date startTime = dateTime.toDate();//设置起始时间 | ||
| 211 | + Calendar c = Calendar.getInstance(); | ||
| 212 | + c.setTime(startTime); | ||
| 213 | + c.add(Calendar.DAY_OF_MONTH, 1); | ||
| 214 | + // 设置结束时间,起始时间为结束时间加1天 | ||
| 215 | + Date endTime = c.getTime(); | ||
| 216 | + predicate = cb.between((Path<Date>) expression,startTime,endTime); | ||
| 217 | + } catch (Exception e) { | ||
| 218 | + e.printStackTrace(); | ||
| 219 | + } | ||
| 220 | + return predicate; | ||
| 221 | + } | ||
| 222 | +} |