spring JPA 实体创建 分页排序 时间比较

实体:::

@Entity
@Table(name = "msp_cms_banner")
public class Banner extends TenantEntity {
    
    /** 序列号 */
    private static final long serialVersionUID = 791983617347082516L;
    
    /** 存在头部标题栏 */
    public static final int HAS_TITLE_BAR = 1;
    
    /** 用户id */
    @Id
    @GeneratedValue(generator = "UIDGenerator")
    @GenericGenerator(name = "UIDGenerator", strategy = "com.comtop.msp.framework.persistence.UIDGenerator")
    @Column(length = 40)
    private String id;
    
    /** 标题 */
    @Column(length = 200)
    private String title;
    
    /** 内容简介 */
    @Column(length = 200)
    private String profile;
    
    /** 图片地址 */
    @Column(length = 500)
    private String imageUrl;
    
    /** 跳转地址 */
    @Column(length = 500)
    private String url;
    
    @Column(length=10)
    private int seq;
    
    /** 发布时间  */
    @Temporal(TemporalType.DATE)
    @Column(name = "publishDate", nullable = false, length = 10)
    private Date publishDate;
    
    /** 下架时间  */
    @Temporal(TemporalType.DATE)
    @Column(name = "downDate", nullable = false, length = 10)
    private Date downDate;
    
    /** 跳转地址的页面是否存在头部标题栏,默认 0 不存在 */
    @Column(columnDefinition = " INT DEFAULT 0 ")
    private int titleBarState;
    
    /** 类型,
    @Column(columnDefinition = " INT DEFAULT 0 ")
    private int type;



service层::关键代码

 /**
     * 根据关键词查询所有记录
     * 
     * @param keyword 关键词
     * @param keyword2 
     * @return 结果集合
     */
    public Page<Banner> findByKeyword(final String type,final String keyword, int pageNumber,int pageSize) {
        // 过滤条件
        Specification<Banner> spec = new Specification<Banner>() {
            
            @Override
            public Predicate toPredicate(Root<Banner> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
                List<Predicate> predicates = Lists.newArrayList();
                if (StringUtils.isNotEmpty(keyword)) {
                    Predicate predicateT = builder.like(root.<String> get("title"), "%/" + keyword + "%", '/');
                    Predicate predicateP = builder.like(root.<String> get("profile"), "%/" + keyword + "%", '/');
                    Predicate predicateI = builder.like(root.<String> get("imageUrl"), "%/" + keyword + "%", '/');
                    Predicate predicateU = builder.like(root.<String> get("url"), "%/" + keyword + "%", '/');
                    predicates.add(builder.or(predicateT, predicateP, predicateI, predicateU));
                }
                predicates.add(builder.equal(root.<String> get("delFlag"), Banner.DEL_FLAG_NORMAL));
                
                if(StringUtils.isNotBlank(type)){
                int parseInt = Integer.parseInt(type);
                if(1==parseInt){
                //1:过期
                predicates.add(builder.greaterThanOrEqualTo(root.<Date>get("downDate"), new Date()));
               
                }//2:未过期
                else if(2==parseInt){
                // date conditon >= 当前时间
                predicates.add(builder.lessThanOrEqualTo(root.<Date>get("downDate"), new Date()));
                }
                }
                
                if (StringUtils.isNotBlank(UserUtils.getTenantId())) {
                    predicates.add(builder.equal(root.<String> get("tenantId"), UserUtils.getTenantId()));
                }
                // 将所有条件用 and 联合起来
                if (predicates.size() > 0) {
                    return builder.and(predicates.toArray(new Predicate[predicates.size()]));
                }
                return builder.conjunction();
            }
        };
        List<Order> orderList = new ArrayList<Order>();
        orderList.add(new Order(Direction.DESC, "seq"));
        orderList.add(new Order(Direction.DESC, "publishDate"));
        PageRequest pageRequest = new PageRequest(pageNumber - 1, pageSize, new Sort(orderList));
        return bannerDao.findAll(spec,pageRequest);
    }





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值