Spring Data JPA 分页查询 映射自定义对象

1. Spring Data JPA 查询接收自定义对象 (非数据库对应的实体类)需要我们定义一个接收返回结果集的接口类

/**

  • 账号 用户表关联查询 的结果集
    */
    public interface UserInfoResultSets {

    //用户帐号ID
    Long getId();
    //用户名称
    String getUserName();
    //邮箱
    String getUserEmail();

}

2.Repository 接口中的分页查询写法

@Query(value = "SELECT a.user_email as userEmail,a.id as id,u.user_name as userName FROM (sys_account a inner join sys_user_role r on a.id = r.user_id ) inner join user_info u on a.id = u.account_id where r.role_id = :roleId ",
countQuery = "SELECT count(*) FROM (sys_account a inner join sys_user_role r on a.id = r.user_id ) inner join user_info u on a.id = u.account_id where r.role_id = :roleId",
nativeQuery = true)
Page<UserInfoResultSets> findPageByRoleId(@Param("roleId") Long roleId, Pageable pageable);

查询字段:a.user_email as userEmail 对应结果集接口类的 getUserEmail

3. 定义一个 VO 类

@Data
@EqualsAndHashCode(callSuper = false)
public class UserInfoVO {
private Long id;
private String userEmail;
private String userName;
}

vo中的字段对应结果集接口类

4. 在业务逻辑中使用

private RestfulVo bulidAccountPage(Byte sign,UserRoleQuery userRoleQuery){
Long roleId = userRoleQuery.getRoleId();
//生成Pageable变量
Pageable pageable = PageRequest.of(userRoleQuery.getP().getPageNum()-1,userRoleQuery.getP().getPageSize());
Page<UserInfoResultSets> accountPage = sign == 1 ? this.accountRepository.findPageByRoleIdEliminate(roleId,pageable) : this.accountRepository.findPageByRoleId(roleId,pageable);
Long totalElements = accountPage.getTotalElements();
List<UserInfoVO> accountVOList = null;
if(totalElements > 0){
// 将 UserInfoResultSets结果集中的属性值 拷贝到UserInfoVO 中
accountVOList = DozerBeanMapperUtil.copyProperties(accountPage.getContent(),UserInfoVO.class);
}
RestfulVo restfulVo = ResultUtil.success(accountVOList);
restfulVo.setTotalElements(totalElements);
return restfulVo;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
    全栈在路上阅读 2,078评论 0 2
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,954评论 0 10
  • 朗朗清云过 山高手为尖 闲观云起落 约得几时闲
    公子雨笙阅读 250评论 7 10
  • 李伟又出去打工了,一个人拉着个灰黑的箱子,里面胡乱装了些半新不旧的衣服,从塘里边走到塘外边,箱子的轮子吱吱扭扭,划...
    别山举水阅读 2,688评论 92 116
  • &&、||运算的高级用法   在JavaSript中,“&&”运算符除了可以对布尔值进行与(AND)运算之外,还可...
    快减肥成功的胖纸阅读 277评论 0 1

友情链接更多精彩内容