栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring boot jpa 自定义返回实体

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring boot jpa 自定义返回实体

spring boot jpa 自定义返回实体
    • Entity-A定义
    • Entity-B定义
    • ABBean自定义返回实体
    • Repository定义
    • Service 定义

Entity-A定义
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

@Data
@Entity
@Table(name = "USER_INFO")
public class UserInfoDo implements Serializable {
    private static final long serialVersionUID = 2723403345407921497L;
    
    @Id
    @Column(name = "USERNAME", nullable = false, length = 20)
    private String userName;
    
    @Column(name = "USESTATUS")
    private Long useStatus;
}
Entity-B定义
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

@Data
@Entity
@Table(name = "USER_AUTH")
public class UserAuthDo implements Serializable {
    private static final long serialVersionUID = 34523452345234L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "UserAuthSeq")
    @SequenceGenerator(name = "UserAuthSeq", sequenceName = "USER_AUTH_SEQ", allocationSize = 1)
    @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
    private Long id;

    @Column(name = "USERNAME", nullable = false, length = 20)
    private String userName;

    @Column(name = "USERTYPE", length = 10)
    private String userType;

    @Column(name = "IP", length = 500)
    private String ip;
    
    @Column(name = "CREATETIME")
    private Date createTime;

    
}
ABBean自定义返回实体
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;

@Data
@AllArgsConstructor
public class ABBean {
    private String userName;
    private Long userInfoUseStatus;
    private Long ID;
    private String userType;
    private Date createTime;
    private String ip;
}
Repository定义
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface UserRepository extends JpaRepository, JpaSpecificationExecutor {
		
    @Query("select new  com.ABBean(a.userName ,a.useStatus , b.id, b.userType,b.createTime ,b.ip " +
            "from UserInfoDo a " +
            "LEFT JOIN UserAuthDo b on a.userName = b.userName " +
            "where (:userName is null or a.userName like :userName) " +
            "and (:userInfoUseStatus is null or a.useStatus = :userInfoUseStatus) " +
            "and (:createTime is null or b.createTime= :createTime) ")
    Page QueryUserAuth(@Param("userName ") String userName,                     
                                                  @Param("userInfoUseStatus") Long userInfoUseStatus,
                                                  @Param("createTime") Date createTime,
                                                  Pageable page);
}
Service 定义
 public Page queryUserInfo(QueryUserInfoRqDto rq) {
 			//排序属性 与 查询语句对应
        Order createTimeSort = new Order(Sort.Direction.DESC, "b.createTime");
        List orders = new ArrayList<>();
        orders.add(createTimeSort);
        Sort sort = Sort.by(orders);
        Pageable pageable = PageRequest.of(Integer.valueOf(rq.getPage()) - 1, Integer.valueOf(rq.getLimit()), sort);
        String userName=null;
        Long userInfoUseStatus=null;
        if (!StringUtils.isEmpty(rq.getUserName())) {
            userName= "%" + rq.getUserName() + "%";
        }
        if (!StringUtils.isEmpty(rq.getUserInfoUseStatus())) {
            userInfoUseStatus=Long.valueOf(rq.getUserInfoUseStatus());
        }
        return userRepository.QueryUserAuth(userName,
                userInfoUseStatus,
                rq.getCreateTime(),
                pageable);
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号