有没有办法将booleanbuilder与查询方法结合使用?

vulvrdjw  于 2021-07-22  发布在  Java
关注(0)|答案(0)|浏览(223)

嗨,我正在使用查询方法来获取我的结果。我的应用程序的设计如下。
成员实体

  1. @Entity
  2. @Builder
  3. @AllArgsConstructor
  4. @NoArgsConstructor
  5. @Getter
  6. @ToString
  7. public class Member {
  8. @Id
  9. @GeneratedValue(strategy = GenerationType.IDENTITY)
  10. private Long mno;
  11. private String name;
  12. private String phone;
  13. }

memberimage实体

  1. @Entity
  2. @Builder
  3. @NoArgsConstructor
  4. @AllArgsConstructor
  5. @Getter
  6. @ToString(exclude="member")
  7. public class MemberImage {
  8. @Id
  9. @GeneratedValue(strategy = GenerationType.IDENTITY)
  10. private Long inum;
  11. private String uuid;
  12. private String imgName;
  13. private String path;
  14. @ManyToOne(fetch=FetchType.LAZY)
  15. private Member member;
  16. }

以及我正在使用的查询方法
memberrepository.java文件

  1. @Query("select m, mi, count(mi) from Member m"+ " left outer join MemberImage mi on mi.member=m group by m")
  2. Page<Object[]> getListPage(Pageable pageable);

pagerequestdto.java页面

  1. @Builder
  2. @AllArgsConstructor
  3. @Data
  4. public class PageRequestDTO {
  5. private int page;
  6. private int size;
  7. private String type;
  8. private String keyword;
  9. public PageRequestDTO(){
  10. this.page = 1;
  11. this.size = 10;
  12. }
  13. public Pageable getPageable(Sort sort){
  14. return PageRequest.of(page -1, size, sort);
  15. }
  16. }

我试着用booleanbuilder做一个搜索操作,如下所示

  1. private BooleanBuilder getSearch(PageRequestDTO requestDTO){
  2. String type = requestDTO.getType();
  3. BooleanBuilder booleanBuilder = new BooleanBuilder();
  4. String keyword = requestDTO.getKeyword();
  5. BooleanExpression expression = qMember.mno.gt(0L);
  6. booleanBuilder.and(expression);
  7. if(type == null || type.trim().length() == 0){
  8. return booleanBuilder;
  9. }
  10. BooleanBuilder conditionBuilder = new BooleanBuilder();
  11. if(type.contains("n")){
  12. conditionBuilder.or(qMember.name.contains(keyword));
  13. }
  14. if(type.contains("p")){
  15. conditionBuilder.or(qMember.phone.contains(keyword));
  16. }
  17. booleanBuilder.and(conditionBuilder);
  18. return booleanBuilder;
  19. }

我想要page<object[]>的结果和我编写的booleanbuilder的术语。有什么办法得到这个结果吗?我尝试了memberrepository.getlistpage(booleanbuilder,pageable)并查看是否可以得到正确的结果,但是没有。有什么建议吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题