Closed armran closed 6 months ago
还有,BaseQuery 里 current 和size ,如果是0 也会报错
还有 Pageable page = QueryHelper.toPage(query); 如果只传分页 current 和size ,也会报错
如果只传分页 没问题, 是我自己加了个 BetweenPredicateHandler 没做空数据验证 才报的错
还有,BaseQuery 里 current 和size ,如果是0 也会报错
还有 Pageable page = QueryHelper.toPage(query); 如果只传分页 current 和size ,也会报错
这个无非就是在QueryHelper.toPage(query);
加之校验,current
,size
不允许为0
如果只传分页 没问题, 是我自己加了个 BetweenPredicateHandler 没做空数据验证 才报的错
这个其实有两个方法
/**
* 构造 {@code AND} 关系的 {@link Predicate} 实例的方法.
*
* @param criteriaBuilder {@link CriteriaBuilder} 实例
* @param from {@link From} 实例
* @param fieldName 实体类的属性名
* @param value 对应属性的值
* @param annotation 前字段使用的注解
* @param <Z> 范型 Z
* @param <X> 范型 X
* @return {@link Predicate} 实例
*/
public <Z, X> Predicate buildPredicate(
CriteriaBuilder criteriaBuilder, From<Z, X> from, String fieldName, @Nullable Object value,
@Nullable Annotation annotation) {
if (null == value) {
return null;
}
return _buildPredicate(criteriaBuilder, from, fieldName, value);
}
/**
* 构造 {@code AND} 关系的 {@link Predicate} 实例的方法.
*
* @param criteriaBuilder {@link CriteriaBuilder} 实例
* @param from {@link From} 实例
* @param fieldName 属性字段名称
* @param value 属性条件对应的值
* @param <Z> 范型 Z
* @param <X> 范型 X
* @return {@link Predicate} 实例
*/
public <Z, X> Predicate _buildPredicate(CriteriaBuilder criteriaBuilder, From<Z, X> from, String fieldName,
@Nonnull Object value) {
return null;
}
这是因为
/**
* 用于“等值条件”({@code field = 'xxx'})场景的注解.
*
* @author <a href="mailto:huangbing0730@gmail">hb0730</a>
* @date 2024/4/27
*/
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Equals {
/**
* 注解的实体字段属性名称,默认为空或空字符串时将使用属性名称.
*
* @return 字符串值
*/
String value() default "";
/**
* 是否允许查询字段{@code is NULL},默认为 {@code false}.
*
* @return 值
*/
boolean allowNull() default false;
/**
* 是否使用驼峰命名,默认为 {@code true}.
*
* @return 值
*/
boolean underCamel() default true;
}
中的boolean allowNull() default false;
如果为null
则SQL为 value IS NULL
如果只传分页 没问题, 是我自己加了个 BetweenPredicateHandler 没做空数据验证 才报的错
还有就是如果需要做分页则使用QueryHelper.toPage(query);
如果只是查询则只需要QueryHelper.ofBean(query)
,如果结合两者才是 既要分页也要根据条件查询
感谢回复
想请教一下,您有没有 代码生成器? 我这里表挺多,而且字段比较乱,大小写,下划线驼峰 什么格式都有。 我想快速生成Dto,entity,和query。 写这个挺费时间的。
感谢回复
- current,size 我重写了 set方法 并且给了个默认值。
- 我在 BetweenPredicateHandler 加了空验证。
- QueryHelper.toPage(query); 我是根据你写的模板做的。没有问题。
想请教一下,您有没有 代码生成器? 我这里表挺多,而且字段比较乱,大小写,下划线驼峰 什么格式都有。 我想快速生成Dto,entity,和query。 写这个挺费时间的。
不好意思,这个暂时没得,你可以扩展 https://github.com/baomidou/generator 变成适合自己项目的代码生成器