发表于: 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动态拼接
评论