JPA查询业务

直接上代码:

以查询日志表操作演示

查询日志的接口
/*******
     * 日志查询的接口
     * @param pageable:分页
     * @param query:查询条件
     * @return
     */
 Page<Logs> query(Pageable pageable, LogsQuery query);
查询日志的接口实现类
@Override
    public Page<Logs> query(Pageable pageable, LogsQuery query) {
 /**** 
 1.r 代表 :Root接口:代表Criteria查询的根对象,定义了实体类型,能为将来导航获得想要的结果,它与SQL查询中的FROM子句类似。,
 2.q代表:q接口 代表一个specific的顶层查询对象,它包含着查询的各个部分,比如:select 、from、where、group by、order by。
 3.cb :CriteriaBuilder接口:用于构造标准查询、复合条件、表达式、排序等。可以通过createQuery的方式获取CriteriaQuery实例
  ****/
        //以下是lambda表达式
        return  logsRepository.findAll((r,q,cb)->{
//            Predicate predicate = r.get("id").isNotNull();
            //首先排除管理员的
            Predicate predicate = cb.notEqual(r.get("operatorNum"), "admin");
            //判断
            if (StringUtils.isNotBlank(query.getStartTime())){
                predicate = cb.and(cb.greaterThanOrEqualTo(r.get("createTime"),query.getStartTime()));
            }
            if (StringUtils.isNotBlank(query.getEndTime())){
                predicate = cb.and(cb.lessThanOrEqualTo(r.get("createTime"),query.getEndTime()));
            }
            if (StringUtils.isNotBlank(query.getCaoZuoRenXm())){
                predicate = cb.and(cb.like(r.get("operatorName"),query.getCaoZuoRenXm()));
            }
            predicate = cb.and(predicate, cb.equal(r.get("isDel"), 0));
            q.where(predicate);
            q.orderBy(cb.desc(r.get("createTime")));
            return predicate;
        },pageable);
    }
日志查询条件类

@ApiModel("日志查询")
@Data
public class LogsQuery  {
    //日记开始时间
    @ApiModelProperty("日志开始时间")
    private String startTime;
    //日记结束时间
    @ApiModelProperty("日志结束时间")
    private String endTime;
    //姓名
    @ApiModelProperty("操作人姓名")
    private String caoZuoRenXm;
    //证件号码
    @ApiModelProperty("证件号码")
    private String zhengJianHaoMa;

}
日志实体类

@ApiModel("日志")
@Entity
@Data
public class Logs extends AbstractAuditingEntity<Logs> {
    //动作
    @ApiModelProperty("操作")
    private String operation;
    //时间
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    //计算机名称
    @ApiModelProperty("计算机名称")
    private String computerName;
    //计算机IP
    @ApiModelProperty("计算机ip地址")
    private String computerIp;
    //操作人id
    @ApiModelProperty("操作人id")
    private Long operatorId;
    //操作人姓名
    @ApiModelProperty("操作人姓名")
    @Column(name = "operatorName")
    private String operatorName;
    //操作人单位
    @ApiModelProperty("操作人单位")
    private String operatorBelong;
    //内容
    @ApiModelProperty("操作内容")
    private String context;
在JPA的查询中,不止有这种。

例如:使用example 进行查询的

//        2.查询图片,把图片放在一个list对象中
        Picture picture = new Picture();
        picture.setPhotoSignature(one);
        Example<Picture> example = Example.of(picture);
        List<Picture> pis = pictureRepository.findAll(example);

(复制代码的不要,我的代码仅供参考,代码不完整)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值