用途
- 结合@JpaSelectOperator 使用 更好
可快速的完成单表的复杂查询
根据条件实体的值进行组织查询结构
- 默认为 拼接添加为
and查询条件为==,值为空的不进行组织 ```java @Autowired private UserService userService;
@PostMapping(“dyFind”)
public ResultVO> dyFind(UserFindDTO userDTO){
JPAUtilExpandCriteria
<a name="uOguL"></a>## 自定义组装查询条件> - **根据实体获取**`**key**`> - `**Restrictions.like(User::getPhone, "123", true)**`> - **写死**`**key**`> - `**Restrictions.like("loginName", "user", true)**````javaJPAUtilExpandCriteria<User> jpaSelect = new JPAUtilExpandCriteria<>();jpaSelect.or(Restrictions.like(User::getPhone, "123", true));jpaSelect.or(Restrictions.like("loginName", "user", true));jpaSelect.add(Restrictions.eq("address", "重庆", true));userService.getJpaBasicsDao().findAll(jpaSelect).forEach(System.out::println);
自定义getSelectBean
public static <T,B> JPAUtilExpandCriteria<T> getSelectBean(B bean) {JPAUtilExpandCriteria<T> jpaSelect = new JPAUtilExpandCriteria<>();Field[] fields = ReflectUtil.getFields(bean.getClass());for (Field field : fields) {String fieldName = field.getName();if ("serialVersionUID".equals(fieldName)) {continue;}Object fieldValue = ReflectUtil.getFieldValue(bean, field);JpaSelectOperator annotation = field.getAnnotation(JpaSelectOperator.class);if (null != annotation) {SimpleExpression simpleExpression = jpaSelectOperatorSwitch(annotation, fieldName, fieldValue);if(Objects.equals(annotation.connect(), SQLConnect.OR)){jpaSelect.or(simpleExpression);}else {jpaSelect.add(simpleExpression);}} else {jpaSelect.add(Restrictions.eq(fieldName, fieldValue, true));}}return jpaSelect;}
附带方法介绍
Restrictions可选值
参数说明:
- 实体字段名
- 查询添加数据值
- true 空值不做查询,false 不忽略空
/*** 等于*/EQ,/*** 不相等*/NE,/*** 模糊*/LIKE,/*** 模糊不包含*/NOTLIKE,/*** 左模糊*/LLIKE,/*** 右模糊*/RLIKE,/*** 大于*/GT,/*** 小于*/LT,/*** 大于等于*/GTE,/*** 小于等于*/LTE,/*** 等于空值*/ISNULL,/*** 空值*/ISNOTNULL,
jpaSelect 可选值
/*** 并且*/AND,/*** 或者*/OR
