springboot查询列表集合的一些条件

  一般来说对于查询数据list集合(比如查询文章),都有一些多功能的查询,就比如按时间排序,按浏览量排序,还有分页,限制查询几条,从第几条开始查询。是否为查询用户相关的文章,为了保证接口的复用性,我一般查询list集合只写了一个接口,但传过来的参数有很多,这样查询文章集合,无论查询文章集合是按时间查,按热度查,还是查询用户相关文章,还是查询相关标签下的文章都可以,但是不知道这样子查询有什么问题...

  /**
     *
     * 查询相关文章 (按热度,按时间,按照搜索值,是否有用户id,标签)
     */
    @PostMapping("/selectArtcleByUser")
    public Result <List<Artcle>> selectArtcleByUser(@RequestBody PageVo pageVo) {
        QueryWrapper queryWrapper = QueryWrapper.create();
        //判断搜索有没有值
        if (pageVo.getSearch()!=null){
            queryWrapper.where(ARTCLE.ARTCLE_TITLE.like(pageVo.getSearch()));
        }
        //判断是不是根据用户查询
        if(pageVo.getUserId()!=null) {
            queryWrapper.where(ARTCLE.USER_ID.eq(pageVo.getUserId()));
        }
        //判断标签(可以为空)
        if(pageVo.getStyle()!=null) {
            //标签为全部不连表查
            if(!Objects.equals(pageVo.getStyle(), "全部")) {
                queryWrapper.join(CLASSIFY).on(CLASSIFY.ID.eq(ARTCLE.CLASSFY_ID))
                        .where(CLASSIFY.CLASS_NAME.eq(pageVo.getStyle()));
            }
        }
        //判断排序类型
        if(pageVo.getSortType().equals("data")){
            queryWrapper.orderBy(ARTCLE.CREATE_TIME.desc());
        }
        else {
            queryWrapper.orderBy(ARTCLE.ARTCLE_LOOK.desc());
        }
        //判断页数(必传)
        Page<Artcle> page1 = new Page<>();
        page1.setPageSize(pageVo.getPageSize());
        //从第几页查询
        page1.setPageNumber(pageVo.getPageNumber());
        Page<Artcle> page = artcleService.page(page1,queryWrapper);
        return Result.ok(page.getRecords(),page.getTotalRow());
    }
@Data
public class PageVo {
    /**
     *查询数目
     */
    private int pageNumber;
    /**
     *查询页数
     */
    private int pageSize;
    /**
     * 标签(或者分类,1对1,一对多),也可以是条件
     */
    private String style;
    /**
     * 用户id
     */
    private Long userId;
    /**
     * 排序类型
     */
    private String sortType;
    /**
     * 搜索值
     */
    private String search;
    /**
     * 查询状态(查什么)
     */
    private int searchState;
}

pageVo就是一些查询条件

实体类

@Data
@EqualsAndHashCode(callSuper = false)
@Table("artcle")
public class Artcle extends BaseEntity {

  /**
   标签id
   */
  @JsonFormat(shape = JsonFormat.Shape.STRING)
  private Long classfyId;
    /**
   文章标题
   */
//    @NonNull
    private String artcleTitle;
    /**
   文章内容
   */
//    @NonNull
    private String artcleContent;
    /**
   浏览量
   */
    private Integer artcleLook;
//    @Table(exist = false)
//    @TableField(exist = false)
  @Column(ignore = true)
    private String className;
  /**
   用户id
   */
  private Long userId;
}

不知道这样子写规范不规范,这么多if是不是影响性能,但现在暂时是这样写的

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值