当前位置: 首页 > 工具软件 > jpa-spec > 使用案例 >

java 高级查询插件_Spring Data Jpa之高级查询(jpa-spec插件)

孟沛
2023-12-01

友情链接:Spring Data Jpa的动态查询库 https://github.com/wenhao/jpa-spec

功能介绍

兼容Spring Data Jpa 和JPA2.1接口。

Equal/NotEqual/Like/NotLike/In/NotIn支持可变参数, Equal/NotEqual 支持空(Null)值。

每个条件支持关联查询。

支持自定义条件查询。

条件构建器。

支持分页和排序。

导包:

com.github.wenhao

jpa-spec

3.1.1

*

*

详细的使用文档:

思路分析:

1 用户传的数据有0-n个

2 所以要准备一个对象接收用户传过来的数据==》Query对象

3 分页的条件对我们来说也是封装到Query对象中的

Query对象(抽个父类):

public abstract classBaseQuery {private int currentPage=1;private int currentSize=10;private boolean sort = true;privateString sortByColumn;//写成抽象类,子类必须实现

public abstractSpecification getSpecification();//分页加排序

publicPageable getPageable(){

Pageable pageRequest=newPageRequest(currentPage, currentSize);if (sortByColumn!=null&&!"".equals(sortByColumn)){if(sort){

Sort sort= newSort(Sort.Direction.ASC,sortByColumn);

pageRequest= newPageRequest(currentPage, currentSize,sort);returnpageRequest;

}

Sort sort= newSort(Sort.Direction.DESC,sortByColumn);

pageRequest= newPageRequest(currentPage, currentSize,sort);returnpageRequest;

}returnpageRequest;

}//拿到排序

publicSort getSort(){if (sortByColumn!=null&&!"".equals(sortByColumn)){if(sort){

Sort sort= newSort(Sort.Direction.ASC,sortByColumn);returnsort;

}

Sort sort= newSort(Sort.Direction.DESC,sortByColumn);returnsort;

}return null;

}

提供相应的getter,setter

}

具体的query对象(以员工查询为例):

public class EmployeeQuery extendsBaseQuery{privateString username;privateString email;privateInteger age;privateLong departmentId;

@OverridepublicSpecification getSpecification() {

Specification spec = Specifications.and()

.like(StringUtils.isNotBlank(username),"username", "%"+username+"%")

.like(StringUtils.isNotBlank(email),"email", "%"+email+"%")

.ge(age!=null,"age",age)

.eq(departmentId!=null,"departmentId.id",departmentId)

.build();returnspec;

}

getter,setter

}

 类似资料: