Spring 项目集成
如果你是 Spring 项目,请直接集成zuji-jpa依赖,spring boot和spring mvc项目均支持。
gradle
implementation 'top.spring-data-jpa:zuji-jpa:1.0.1'
maven
<dependency>
<groupId>top.spring-data-jpa</groupId>
<artifactId>zuji-jpa</artifactId>
<version>1.0.1</version>
</dependency>
使用示例
spring data jpa使用演示
类似于mybatis-plus的条件构造器
动态条件查询 + or 嵌套条件+ 排序+ 分页
public Page<User> list(ReqUserListVO params) {
Specification<User> spec = Specifications.where(e -> {
if (!params.getUserType().equals(UserType.ALL)) {
e.eq("userType", params.getUserType());
}
if (params.getUserName() != null) {
e.contains("userName", params.getUserName());
}
if (params.getRange() != null) {
e.eq("assigneeId", AuthHelper.currentUserId());
}
e.or(e2 -> {
e2.eq("status", "1");
e2.eq("status", "2");
});
e.eq("deleted", 0);
});
Sort sort = Sort.by("createTime").descending();
return repository.findAll(spec, params.pageRequest(sort));
}
如果没有条件判断也可以写成这样,链式编程
public Page<Users> list(ReqUserListDTO params) {
Specification<User> spec = Specifications.where(e -> {
e.eq("userType", params.getUserType())
.contains("userName", params.getUserName())
.eq("assigneeId", AuthHelper.currentUserId())
.or(e2 -> e2.eq("status", "1").eq("status", "2"))
.eq("deleted", 0);
});
Sort sort = Sort.by("createTime").descending();
return repository.findAll(spec, params.pageRequest(sort));
}
等同于sql
SELECT
*
FROM
user
WHERE
user_type = 'ADMIN'
AND user_name like "%admin%"
AND assignee_id = 11
AND ( status = 1 OR status = 2 )
AND deleted = 0
ORDER BY
create_time DESC
LIMIT 0,10
基于spring data jap Specification 查询封装,封装精简 灵活 ,扩展性非常强。
如果有任何问题或想要更多交流,请加QQ群 758629787。