Skip to content

Commit 457196e

Browse files
committed
[Wen Hao] - upgrade to 3.0.0.
1 parent 9eb9340 commit 457196e

20 files changed

+378
-285
lines changed

README.md

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ repositories {
2323
}
2424
2525
dependencies {
26-
compile 'com.github.wenhao:jpa-spec:2.2.3'
26+
compile 'com.github.wenhao:jpa-spec:3.0.0'
2727
}
2828
```
2929

@@ -33,7 +33,7 @@ dependencies {
3333
<dependency>
3434
<groupId>com.github.wenhao</groupId>
3535
<artifactId>jpa-spec</artifactId>
36-
<version>2.2.3</version>
36+
<version>3.0.0</version>
3737
</dependency>
3838
```
3939

@@ -56,7 +56,7 @@ public interface PersonRepository extends JpaRepository<Person, Long>, JpaSpecif
5656

5757
```java
5858
public Page<Person> findAll(SearchRequest request) {
59-
Specification<Person> specification = new Specifications<Person>()
59+
Specification<Person> specification = Specifications.<Person>builder()
6060
.eq(StringUtils.isNotBlank(request.getName()), "name", request.getName())
6161
.gt(Objects.nonNull(request.getAge()), "age", 18)
6262
.between("birthday", new Range<>(new Date(), new Date()))
@@ -75,7 +75,7 @@ find any person nickName equals to "dog" and name equals to "Jack"/"Eric" or nul
7575

7676
```java
7777
public List<Person> findAll(SearchRequest request) {
78-
Specification<Person> specification = new Specifications<Person>()
78+
Specification<Person> specification = Specifications.<Person>builder()
7979
.eq("nickName", "dog")
8080
.eq(StringUtils.isNotBlank(request.getName()), "name", "Jack", "Eric", null)
8181
.eq("company", null) //or eq("company", (Object) null)
@@ -93,7 +93,7 @@ find any person name in "Jack" or "Eric" and company not in "ThoughtWorks" or "I
9393

9494
```java
9595
public List<Person> findAll(SearchRequest request) {
96-
Specification<Person> specification = new Specifications<Person>()
96+
Specification<Person> specification = Specifications.<Person>builder()
9797
.in("name", request.getNames().toArray()) //or in("name", "Jack", "Eric")
9898
.notIn("company", "ThoughtWorks", "IBM")
9999
.build();
@@ -110,7 +110,7 @@ find any people age bigger than 18.
110110

111111
```java
112112
public List<Person> findAll(SearchRequest request) {
113-
Specification<Person> specification = new Specifications<Person>()
113+
Specification<Person> specification = Specifications.<Person>builder()
114114
.gt(Objects.nonNull(request.getAge()), "age", 18)
115115
.build();
116116

@@ -126,7 +126,7 @@ find any person age between 18 and 25, birthday between someday and someday.
126126

127127
```java
128128
public List<Person> findAll(SearchRequest request) {
129-
Specification<Person> specification = new Specifications<Person>()
129+
Specification<Person> specification = Specifications.<Person>builder()
130130
.between(Objects.nonNull(request.getAge(), "age", new Range<>(18, 25))
131131
.between("birthday", new Range<>(new Date(), new Date()))
132132
.build();
@@ -143,7 +143,7 @@ find any person name like %ac% or %og%, company not like %ec%.
143143

144144
```java
145145
public Page<Person> findAll(SearchRequest request) {
146-
Specification<Person> specification = new Specifications<Person>()
146+
Specification<Person> specification = Specifications.<Person>builder()
147147
.like("name", "ac", "%og%")
148148
.notLike("company", "ec")
149149
.build();
@@ -152,17 +152,34 @@ public Page<Person> findAll(SearchRequest request) {
152152
}
153153
```
154154

155+
####Or
156+
157+
support or specifications.
158+
159+
```java
160+
public List<Phone> findAll(SearchRequest request) {
161+
Specification<Person> specification = Specifications.<Person>builder()
162+
.and(OrSpecifications.<Person>builder()
163+
.like("name", "%ac%")
164+
.gt("age", 19)
165+
.build())
166+
.build();
167+
168+
return phoneRepository.findAll(specification);
169+
}
170+
```
171+
155172
####Join
156173

157-
each specification support association query as inner join.
174+
each specification support association query as left join.
158175

159176
**Test:** [JoinTest.java]
160177

161178
@ManyToOne association query, find person name equals to "Jack" and phone brand equals to "HuaWei".
162179

163180
```java
164181
public List<Phone> findAll(SearchRequest request) {
165-
Specification<Phone> specification = new Specifications<Phone>()
182+
Specification<Phone> specification = Specifications.<Phone>builder()
166183
.eq(StringUtils.isNotBlank(request.getBrand()), "brand", "HuaWei")
167184
.eq(StringUtils.isNotBlank(request.getPersonName()), "person.name", "Jack")
168185
.build();
@@ -175,7 +192,7 @@ public List<Phone> findAll(SearchRequest request) {
175192

176193
```java
177194
public List<Phone> findAll(SearchRequest request) {
178-
Specification<Person> specification = new Specifications<Person>()
195+
Specification<Person> specification = Specifications.<Person>builder()
179196
.between("age", new Range<>(10, 35))
180197
.eq(StringUtils.isNotBlank(jack.getName()), "addresses.street", "Chengdu")
181198
.build();
@@ -194,7 +211,7 @@ You can custom specification to do the @ManyToOne and @ManyToMany as well.
194211

195212
```java
196213
public List<Phone> findAll(SearchRequest request) {
197-
Specification<Phone> specification = new Specifications<Phone>()
214+
Specification<Phone> specification = Specifications.<Phone>builder()
198215
.eq(StringUtils.isNotBlank(request.getBrand()), "brand", "HuaWei")
199216
.and(StringUtils.isNotBlank(request.getPersonName()), (root, query, cb) -> {
200217
Path<Person> person = root.get("person");
@@ -212,7 +229,7 @@ public List<Phone> findAll(SearchRequest request) {
212229

213230
```java
214231
public List<Phone> findAll(SearchRequest request) {
215-
Specification<Person> specification = new Specifications<Person>()
232+
Specification<Person> specification = Specifications.<Person>builder()
216233
.between("age", new Range<>(10, 35))
217234
.and(StringUtils.isNotBlank(jack.getName()), ((root, query, cb) -> {
218235
Join address = root.join("addresses", JoinType.LEFT);
@@ -230,14 +247,14 @@ find person by pagination and sort by name desc and birthday asc.
230247

231248
```java
232249
public Page<Person> findAll(SearchRequest request) {
233-
Specification<Person> specification = new Specifications<Person>()
250+
Specification<Person> specification = Specifications.<Person>builder()
234251
.eq(StringUtils.isNotBlank(request.getName()), "name", request.getName())
235252
.gt("age", 18)
236253
.between("birthday", new Range<>(new Date(), new Date()))
237254
.like("nickName", "%og%")
238255
.build();
239256

240-
Sort sort = new Sorts()
257+
Sort sort = Sorts.builder()
241258
.desc(StringUtils.isNotBlank(request.getName()), "name")
242259
.asc("birthday")
243260
.build();
@@ -274,7 +291,7 @@ public class PersonIdCard {
274291
275292
```java
276293
public List<PersonIdCard> findAll(SearchRequest request) {
277-
Specification<PersonIdCard> specification = new Specifications<PersonIdCard>()
294+
Specification<PersonIdCard> specification = Specifications.<PersonIdCard>builder()
278295
.gt(Objects.nonNull(request.getAge()), "age", 18)
279296
.build();
280297

build.gradle

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ repositories {
2020
}
2121

2222
group = 'com.github.wenhao'
23-
version = '2.2.3'
23+
version = '3.0.0'
2424

2525
idea {
2626
project {
@@ -98,10 +98,10 @@ bintray {
9898
githubRepo = 'wenhao/jpa-spec'
9999
githubReleaseNotesFile = 'README.md'
100100
version {
101-
name = '2.2.3'
102-
desc = 'A JAP Query By Specification framework 2.2.3'
101+
name = '3.0.0'
102+
desc = 'A JAP Query By Specification framework 3.0.0'
103103
released = new Date()
104-
vcsTag = '2.2.3'
104+
vcsTag = '3.0.0'
105105
}
106106
}
107107
}
@@ -117,7 +117,7 @@ install {
117117
packaging 'jar'
118118
groupId 'com.github.wenhao'
119119
artifactId 'jpa-spec'
120-
version '2.2.3'
120+
version '3.0.0'
121121

122122
licenses {
123123
license {
@@ -171,7 +171,7 @@ uploadArchives {
171171
packaging 'jar'
172172
groupId 'com.github.wenhao'
173173
artifactId 'jpa-spec'
174-
version '2.2.3'
174+
version '3.0.0'
175175

176176
scm {
177177
url 'scm:[email protected]:wenhao/jpa-spec.git'

0 commit comments

Comments
 (0)