美文网首页
springdata JPA使用教程

springdata JPA使用教程

作者: 杨康他兄弟 | 来源:发表于2019-12-26 09:11 被阅读0次
Criteria查询

这是springdata中最强大,最灵活的使用方式了,几乎可以满足所有的查询场景。用法如下:

  1. 首先Repository要继承JpaSpecificationExecutor
public interface DemoRepository extends JpaRepository< DemoEntity,String>, JpaSpecificationExecutor {
  ......
}
  1. 构造动态查询,多条件查询
package com.hello.springdata.jpa.service.impl;

@Service
public class ServiceServiceImpl implements ServiceService {
    private Logger logger = LoggerFactory.getLogger(ServiceServiceImpl.class);

    @Autowired
    DemoRepository  demoDao ;

    @Override
    public Page<TDemoServiceEntity> findPage(Map<String, String> params, Pageable pageable) {
        Specification querySpeci = (Specification) (root, criteriaQuery, criteriaBuilder) -> {
            List<Predicate> predicates = new ArrayList<>();
            //服务名模糊查询
            String serviceName = params.get("serviceName");
            if(!StringUtils.isEmpty(params.get("serviceName"))) {
                predicates.add(criteriaBuilder.like(root.get("serviceName"), "%" + serviceName + "%"));
            }
            //服务IP查询
            String serviceIp = params.get("serviceIp");
            if(!StringUtils.isEmpty(serviceIp)) {
                predicates.add(criteriaBuilder.equal(root.get("serviceIp"), serviceIp ));
            }
            //服务类型查询
            String serviceType = params.get("serviceType");
            if(!StringUtils.isEmpty(serviceType)) {
                predicates.add(criteriaBuilder.equal(root.get("serviceType"), serviceType ));
            }
            //服务状态查询
            String serviceStatus = params.get("serviceStatus");
            if(!StringUtils.isEmpty(serviceStatus)) {
                predicates.add(criteriaBuilder.equal(root.get("serviceStatus"), serviceStatus ));
            }
            //服务创建时间查询
            String startTime = params.get("startTime");
            if(!StringUtils.isEmpty(startTime)) {
                predicates.add(criteriaBuilder.greaterThan(root.get("createTime"), startTime ));
            }
            //服务创建时间查询
            String endTime = params.get("endTime");
            if(!StringUtils.isEmpty(endTime)) {
                predicates.add(criteriaBuilder.lessThan(root.get("createTime"), endTime ));
            }
            return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
        };
        return demoDao.findAll(querySpeci, pageable);
    }
}

相关文章

  • springdata JPA使用教程

    Criteria查询 这是springdata中最强大,最灵活的使用方式了,几乎可以满足所有的查询场景。用法如下:...

  • Spring Data JPA

    Spring Data JPA,一种动态条件查询的写法 我们在使用SpringData JPA框架时,进行条件查询...

  • Spring Data下---Spring Data JPA的使

    Spring Data下---Spring Data JPA的使用 一、SpringData的环境搭建 依赖添加:...

  • 学习笔记

    1. SpringData JPA只是SpringData中的一个子模块。JPA是一套标准接口,而Hibernat...

  • 7 Spring-data-jpa查询方法

    springdata-jpa 八种查询方法 Spring Data JPA 简单查询--接口方法 jpa动态查询-...

  • Spring Data JPA入门

    [TOC] SpringData JPA是spring基于ORM框架、JPA规范的基础上封装的一套JPA应用框架,...

  • SpringData JPA

    一、概述 1. SpringData 概述 Spring Data : Spring 的一个子项目。用于简化数据库...

  • springdata jpa

  • SpringBoot项目使用Jpa时设置spring.jpa.h

    前言 问题描述 在springboot项目中使用springdata Jpa,并且希望当我的实体类发生了更改,数据...

  • SpringData JPA 使用笔记

    一、实体类 1、注解 @Entity 表明是实体类 @Table(name = "自定义的表名") 自定义表名,不...

网友评论

      本文标题:springdata JPA使用教程

      本文链接:https://www.haomeiwen.com/subject/mxfcoctx.html