-
Notifications
You must be signed in to change notification settings - Fork 0
/
FooCustomRepositoryImpl.java
61 lines (49 loc) · 1.85 KB
/
FooCustomRepositoryImpl.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.hiit.api.repository.dao.bussiness.custom;
import com.hiit.api.repository.entity.business.FooEntity;
import com.hiit.api.repository.entity.business.QFooEntity;
import com.hiit.api.repository.entity.business.param.FooEntitySearchParam;
import com.querydsl.core.types.dsl.BooleanExpression;
import com.querydsl.jpa.JPQLQuery;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport;
public class FooCustomRepositoryImpl extends QuerydslRepositorySupport
implements FooCustomRepository {
public FooCustomRepositoryImpl() {
super(FooEntity.class);
}
@Override
public Page<FooEntity> findAllByNameAndDeletedFalse(Pageable pageable, String name) {
QFooEntity foo = QFooEntity.fooEntity;
JPQLQuery<FooEntity> query =
from(foo)
.where(foo.name.eq(name), foo.deleted.isFalse())
.orderBy(foo.id.desc())
.offset(pageable.getOffset())
.limit(pageable.getPageSize());
return new PageImpl<>(query.fetch(), pageable, query.fetchCount());
}
@Override
public Page<FooEntity> search(Pageable pageable, FooEntitySearchParam param) {
QFooEntity foo = QFooEntity.fooEntity;
JPQLQuery<FooEntity> query =
from(foo).where(getGtId(param.getId()), getEqName(param.getName()));
return new PageImpl<>(query.fetch(), pageable, query.fetchCount());
}
private BooleanExpression getGtId(Optional<Long> param) {
BooleanExpression gtId = null;
if (param.isPresent()) {
gtId = QFooEntity.fooEntity.id.gt(param.get());
}
return gtId;
}
private BooleanExpression getEqName(Optional<String> param) {
BooleanExpression eqName = null;
if (param.isPresent()) {
eqName = QFooEntity.fooEntity.name.eq(param.get());
}
return eqName;
}
}