zoukankan      html  css  js  c++  java
  • 【Java】java注解@Transient的作用, 配合JPA中时间段的查询

    java注解@Transient的作用

    @Transient标注的属性,不会被ORM框架映射到数据库中。

    用于数据库表字段和java实体属性不一致的时候,标注在属性上使用。

    例如时间段的查询 查询

    Receipt

    的createDate

    那么可以在

    Receipt

    实体中加两个字段:

      //起始时间
        @Transient
        private Date startDate;
    
        //结束时间
        @Transient
        private Date endDate;

    这两个字段并不会在数据库中出现。

    但是前台传递过来的时间段,就可以使用这两个字段做接收,然后在JPA查询条件中,

    在实体中加上下面这个方法:

    package com.pisen.cloud.luna.ms.security.code.base.domain;
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.data.jpa.domain.Specification;
    
    import javax.persistence.*;
    import javax.persistence.criteria.CriteriaBuilder;
    import javax.persistence.criteria.CriteriaQuery;
    import javax.persistence.criteria.Predicate;
    import javax.persistence.criteria.Root;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    /**
     * 入库单
     */
    @Entity
    @Table(
            uniqueConstraints = {
                    @UniqueConstraint(columnNames = "uid"),
                    @UniqueConstraint(columnNames = {"receiptCode","tenementId"})
            },
            indexes = {
                    @Index(columnList = "receiptCode")
            }
    )
    public class Receipt {
    
        public static  final Integer SOURCE_PAGE_ADD = 1; //入库单来源-页面新增
    
        public static  final Integer SOURCE_CODE_STORAGE= 2;//入库单来源-生码入库
    
        public static  final Integer SOURCE_PACKING_STORAGE = 3;//入库单来源-装箱入库
    
        public static  final Integer SOURCE_SCAN_CODE_STORAGE = 4;//入库单来源-扫码入库
    
    
    
        public static final Integer STATUS_RECEIPT_CREATE_ING = 1;//入库状态-清单生成中
    
        public static final Integer STATUS_RECEIPT_FAIL = 2;//入库状态-清单生成失败
    
        public static final Integer STATUS_RECEIPT_COMPELETE = 3;//入库状态-已入库
    
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id; //主键
    
        private String uid;//业务主键
    
        private String createUid;// 创建人id
    
        private String createName;//入库单创建人
    
        private Date createDate;// 入库单创建时间  入库日期
    
        private String updateId;// 修改人id
    
        private Date updateDate;// 入库单修改时间
    
        private String remark;//备注
    
    
    
        private String receiptCode;// 入库单号  租户内唯一
    
        private Integer receiptSource;// 入库单来源
    
        private Integer receiptStatus;// 入库状态
    
        private String tenementId;//租户ID
    
        private String depotId;//仓库ID
    
        private String receiptDepot;// 入库方仓库 仓库名称
    
        private String depotAddress;//仓库地址
    
        private String outerCode;//外部单号 暂时隐藏
    
    
        //第几页
        @Transient
        private Integer pageNum = 0;
    
        //每页多少条
        @Transient
        private Integer pageSize = 10;
    
        //起始时间
        @Transient
        private Date startDate;
    
        //结束时间
        @Transient
        private Date endDate;
    
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getUid() {
            return uid;
        }
    
        public void setUid(String uid) {
            this.uid = uid;
        }
    
        public String getCreateUid() {
            return createUid;
        }
    
        public void setCreateUid(String createUid) {
            this.createUid = createUid;
        }
    
        public String getCreateName() {
            return createName;
        }
    
        public void setCreateName(String createName) {
            this.createName = createName;
        }
    
        public Date getCreateDate() {
            return createDate;
        }
    
        public void setCreateDate(Date createDate) {
            this.createDate = createDate;
        }
    
        public String getUpdateId() {
            return updateId;
        }
    
        public void setUpdateId(String updateId) {
            this.updateId = updateId;
        }
    
        public Date getUpdateDate() {
            return updateDate;
        }
    
        public void setUpdateDate(Date updateDate) {
            this.updateDate = updateDate;
        }
    
        public String getRemark() {
            return remark;
        }
    
        public void setRemark(String remark) {
            this.remark = remark;
        }
    
        public String getReceiptCode() {
            return receiptCode;
        }
    
        public void setReceiptCode(String receiptCode) {
            this.receiptCode = receiptCode;
        }
    
        public Integer getReceiptSource() {
            return receiptSource;
        }
    
        public void setReceiptSource(Integer receiptSource) {
            this.receiptSource = receiptSource;
        }
    
        public Integer getReceiptStatus() {
            return receiptStatus;
        }
    
        public void setReceiptStatus(Integer receiptStatus) {
            this.receiptStatus = receiptStatus;
        }
    
        public String getDepotAddress() {
            return depotAddress;
        }
    
        public void setDepotAddress(String depotAddress) {
            this.depotAddress = depotAddress;
        }
    
        public String getTenementId() {
            return tenementId;
        }
    
        public void setTenementId(String tenementId) {
            this.tenementId = tenementId;
        }
    
        public String getDepotId() {
            return depotId;
        }
    
        public void setDepotId(String depotId) {
            this.depotId = depotId;
        }
    
        public String getReceiptDepot() {
            return receiptDepot;
        }
    
        public void setReceiptDepot(String receiptDepot) {
            this.receiptDepot = receiptDepot;
        }
    
        public String getOuterCode() {
            return outerCode;
        }
    
        public void setOuterCode(String outerCode) {
            this.outerCode = outerCode;
        }
    
        public Integer getPageNum() {
            return pageNum;
        }
    
        public void setPageNum(Integer pageNum) {
            this.pageNum = pageNum;
        }
    
        public Integer getPageSize() {
            return pageSize;
        }
    
        public void setPageSize(Integer pageSize) {
            this.pageSize = pageSize;
        }
    
        public Date getStartDate() {
            return startDate;
        }
    
        public void setStartDate(Date startDate) {
            this.startDate = startDate;
        }
    
        public Date getEndDate() {
            return endDate;
        }
    
        public void setEndDate(Date endDate) {
            this.endDate = endDate;
        }
    
        //高级查询
        public static Specification<Receipt> where(final Receipt receipt){
    
            return new Specification<Receipt>() {
    
                @Override
                public Predicate toPredicate(Root<Receipt> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
    
                    List<Predicate> predicates = new ArrayList<Predicate>();
    
                    //动态条件
                    String uid = receipt.getUid();
                    if(StringUtils.isNotBlank(uid)){
                        predicates.add(cb.equal(root.<String>get("uid"), uid));
                    }
    
                    //入库单号
                    String receiptCode = receipt.getReceiptCode();
                    if (StringUtils.isNotBlank(receiptCode)) {
                        predicates.add(cb.equal(root.<String>get("receiptCode"), receiptCode));
                    }
    
                    //入库单来源
                    Integer receiptSource = receipt.getReceiptSource();
                    if (receiptSource != null) {
                        predicates.add(cb.equal(root.<String>get("receiptSource"), receiptSource));
                    }
    
                    //入库日期
                    Date startDate = receipt.getStartDate();
                    Date endDate = receipt.getEndDate();
                    if (startDate != null && endDate != null){
                        predicates.add(cb.between(root.get("createDate"),startDate,endDate));
                    }
    
                    //入库状态
                    Integer receiptStatus = receipt.getReceiptStatus();
                    if (receiptStatus != null) {
                        predicates.add(cb.equal(root.<String>get("receiptStatus"), receiptStatus));
                    }
    
                    //租户id
                    String tenementId = receipt.getTenementId();
                    if(StringUtils.isNotBlank(tenementId)){
                        predicates.add(cb.equal(root.<String>get("tenementId"), tenementId));
                    }
    
                    return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
                }
            };
    
        }
    
    }
    package com.pisen.cloud.luna.ms.security.code.base.domain;

    import org.apache.commons.lang3.StringUtils;
    import org.springframework.data.jpa.domain.Specification;

    import javax.persistence.*;
    import javax.persistence.criteria.CriteriaBuilder;
    import javax.persistence.criteria.CriteriaQuery;
    import javax.persistence.criteria.Predicate;
    import javax.persistence.criteria.Root;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;

    /**
    * 入库单
    */
    @Entity
    @Table(
    uniqueConstraints = {
    @UniqueConstraint(columnNames = "uid"),
    @UniqueConstraint(columnNames = {"receiptCode","tenementId"})
    },
    indexes = {
    @Index(columnList = "receiptCode")
    }
    )
    public class Receipt {

    public static final Integer SOURCE_PAGE_ADD = 1; //入库单来源-页面新增

    public static final Integer SOURCE_CODE_STORAGE= 2;//入库单来源-生码入库

    public static final Integer SOURCE_PACKING_STORAGE = 3;//入库单来源-装箱入库

    public static final Integer SOURCE_SCAN_CODE_STORAGE = 4;//入库单来源-扫码入库



    public static final Integer STATUS_RECEIPT_CREATE_ING = 1;//入库状态-清单生成中

    public static final Integer STATUS_RECEIPT_FAIL = 2;//入库状态-清单生成失败

    public static final Integer STATUS_RECEIPT_COMPELETE = 3;//入库状态-已入库


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id; //主键

    private String uid;//业务主键

    private String createUid;// 创建人id

    private String createName;//入库单创建人

    private Date createDate;// 入库单创建时间 入库日期

    private String updateId;// 修改人id

    private Date updateDate;// 入库单修改时间

    private String remark;//备注



    private String receiptCode;// 入库单号 租户内唯一

    private Integer receiptSource;// 入库单来源

    private Integer receiptStatus;// 入库状态

    private String tenementId;//租户ID

    private String depotId;//仓库ID

    private String receiptDepot;// 入库方仓库 仓库名称

    private String depotAddress;//仓库地址

    private String outerCode;//外部单号 暂时隐藏


    //第几页
    @Transient
    private Integer pageNum = 0;

    //每页多少条
    @Transient
    private Integer pageSize = 10;

    //起始时间
    @Transient
    private Date startDate;

    //结束时间
    @Transient
    private Date endDate;


    public Long getId() {
    return id;
    }

    public void setId(Long id) {
    this.id = id;
    }

    public String getUid() {
    return uid;
    }

    public void setUid(String uid) {
    this.uid = uid;
    }

    public String getCreateUid() {
    return createUid;
    }

    public void setCreateUid(String createUid) {
    this.createUid = createUid;
    }

    public String getCreateName() {
    return createName;
    }

    public void setCreateName(String createName) {
    this.createName = createName;
    }

    public Date getCreateDate() {
    return createDate;
    }

    public void setCreateDate(Date createDate) {
    this.createDate = createDate;
    }

    public String getUpdateId() {
    return updateId;
    }

    public void setUpdateId(String updateId) {
    this.updateId = updateId;
    }

    public Date getUpdateDate() {
    return updateDate;
    }

    public void setUpdateDate(Date updateDate) {
    this.updateDate = updateDate;
    }

    public String getRemark() {
    return remark;
    }

    public void setRemark(String remark) {
    this.remark = remark;
    }

    public String getReceiptCode() {
    return receiptCode;
    }

    public void setReceiptCode(String receiptCode) {
    this.receiptCode = receiptCode;
    }

    public Integer getReceiptSource() {
    return receiptSource;
    }

    public void setReceiptSource(Integer receiptSource) {
    this.receiptSource = receiptSource;
    }

    public Integer getReceiptStatus() {
    return receiptStatus;
    }

    public void setReceiptStatus(Integer receiptStatus) {
    this.receiptStatus = receiptStatus;
    }

    public String getDepotAddress() {
    return depotAddress;
    }

    public void setDepotAddress(String depotAddress) {
    this.depotAddress = depotAddress;
    }

    public String getTenementId() {
    return tenementId;
    }

    public void setTenementId(String tenementId) {
    this.tenementId = tenementId;
    }

    public String getDepotId() {
    return depotId;
    }

    public void setDepotId(String depotId) {
    this.depotId = depotId;
    }

    public String getReceiptDepot() {
    return receiptDepot;
    }

    public void setReceiptDepot(String receiptDepot) {
    this.receiptDepot = receiptDepot;
    }

    public String getOuterCode() {
    return outerCode;
    }

    public void setOuterCode(String outerCode) {
    this.outerCode = outerCode;
    }

    public Integer getPageNum() {
    return pageNum;
    }

    public void setPageNum(Integer pageNum) {
    this.pageNum = pageNum;
    }

    public Integer getPageSize() {
    return pageSize;
    }

    public void setPageSize(Integer pageSize) {
    this.pageSize = pageSize;
    }

    public Date getStartDate() {
    return startDate;
    }

    public void setStartDate(Date startDate) {
    this.startDate = startDate;
    }

    public Date getEndDate() {
    return endDate;
    }

    public void setEndDate(Date endDate) {
    this.endDate = endDate;
    }

    //高级查询
    public static Specification<Receipt> where(final Receipt receipt){

    return new Specification<Receipt>() {

    @Override
    public Predicate toPredicate(Root<Receipt> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

    List<Predicate> predicates = new ArrayList<Predicate>();

    //动态条件
    String uid = receipt.getUid();
    if(StringUtils.isNotBlank(uid)){
    predicates.add(cb.equal(root.<String>get("uid"), uid));
    }

    //入库单号
    String receiptCode = receipt.getReceiptCode();
    if (StringUtils.isNotBlank(receiptCode)) {
    predicates.add(cb.equal(root.<String>get("receiptCode"), receiptCode));
    }

    //入库单来源
    Integer receiptSource = receipt.getReceiptSource();
    if (receiptSource != null) {
    predicates.add(cb.equal(root.<String>get("receiptSource"), receiptSource));
    }

    //入库日期
    Date startDate = receipt.getStartDate();
    Date endDate = receipt.getEndDate();
    if (startDate != null && endDate != null){
    predicates.add(cb.between(root.get("createDate"),startDate,endDate));
    }

    //入库状态
    Integer receiptStatus = receipt.getReceiptStatus();
    if (receiptStatus != null) {
    predicates.add(cb.equal(root.<String>get("receiptStatus"), receiptStatus));
    }

    //租户id
    String tenementId = receipt.getTenementId();
    if(StringUtils.isNotBlank(tenementId)){
    predicates.add(cb.equal(root.<String>get("tenementId"), tenementId));
    }

    return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
    }
    };

    }

    }
  • 相关阅读:
    Java Mybatis 传参方式
    html Js跨域提交数据方法,跨域提交数据后台获取不到数据
    uuidgen
    shell 案例
    docker搭建tomcat环境
    redis主从+哨兵模式(借鉴)
    ansible-playbook 案例
    NFS
    mysql -sql语句
    定时任务crontab命令
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9024389.html
Copyright © 2011-2022 走看看