发表于: 2019-08-28 23:36:43

1 701


今日:

学习jpa的动态拼接,光是动态拼接就卡了一下午,重新看了好几遍jpa的文档才试着弄了一下

List<ForegroundUser> findTopByUserIdAndRoleIdAndGradeIdAndPackageIdAndUserImgAndUserNicknameAndUserMobileNumberAndUserStateAndUserCreateAtAndUserUpdateAtAndUserCreateByAndUserUpdateBy(
Long userId,Long roleId,Long gradeId,Long packageId, String userImg, String userNickname, Long userMobileNumber, Integer userState, Long userCreateAt, Long userUpdateAt, String userCreateBy, String userUpdateBy, Pageable pageable
);

一开始用的没什么问题,现在有些bug,在排查原因

分页的PageRequeset不需要new了,有新方法PageRequest.of

sort也可以独立写

以用户列表接口为例

@GetMapping("/a/manager/foreground/user")
public ResultApi userList( String userNickname,Long userMobileNumber,Long gradeId,Long packageId,Long userCreateAtFrom,Long userCreateAtTo,Integer userState,Integer pageNum){
ForegroundUser foregroundUser = new ForegroundUser();
   foregroundUser.setUserNickname(userNickname);
   foregroundUser.setUserMobileNumber(userMobileNumber);
   foregroundUser.setGradeId(gradeId);
   foregroundUser.setPackageId(packageId);
   foregroundUser.setUserState(userState);
   Sort sort = new Sort(Sort.Direction.DESC,"userCreateAt");
   Pageable pageable = PageRequest.of(pageNum,10,sort);
   List<ForegroundUser> foregroundUserList = foregroundUserService.findTopByUserNicknameAndUserMobileNumberAndGradeIdAndPackageIdAndUserCreateAtBetweenAndUserState(foregroundUser,userCreateAtFrom,userCreateAtTo,pageable);
   return new ResultApi(ResultCode.SUCCESS,foregroundUserList);
}


明日:

继续写接口


问题:

1.由于jpa拼接语句导致最后的查询结果有时候不可预料,可能是不熟练的缘故

2.jpa这样的查询,要做redis优化速度或者sql优化查询速度,有些困难


收获:

jpa动态拼接


返回列表 返回列表
评论

    分享到