Srring Data JPA ----springboot

JPA:Java Persistence API   基于O/R映射的标准规范。

O/R映射:Object-Relational Mapping 将类和数据库中的表进行映射,通过程序对对象进行操作,进而操作数据库表

标准规范:定义标准规则,不提供实现,使用者只需要按照规范中定义的方式进行使用,厂商负责实现

使用jpa创建数据库访问层:定义一个接口,继承JpaRepository接口,如下

public interface UserRepository extends JpaRepository {
    //定义方法
}

 jpa关键字:链接https://www.cnblogs.com/BenWong/p/3890012.html

可以使用关键字进行结果的数量限制,关键字top,first:findFirst10ByName

使用@Query查询

方式1:使用参数索引

@Query(value = "select * from user where name=?1")
    List getUserByName(String name);

方式2:使用命名参数

@Query(value = "select * from user where name= :name",nativeQuery = true)
    List getUserByName(@Param("name") String name);

更新查询:@Modifying和@Query注解组合来事件更新查询

@Modifying
    @Query(value = "update user set name=?1")
    int setName(String name);

JPA动态查询

JPA提供基于Criteria(标准,准则)查询的方式。Spring Data JPA 提供了一个Specification(规范)接口构造准则查询,Specification接口定义toPredicate方法用来构造查询条件,接口类必须要实现JpaSpecifacationExecutor接口

public interface UserRepository extends JpaRepository,JpaSpecificationExecutor{

定义Criterial查询

public class CustomerSpecs {

    public static Specification userByAge(){
        return new Specification() {
            @Nullable
            @Override
            public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {
                return criteriaBuilder.equal(root.get("AGE"),18);
            }
        };
    }

}

然后使用findAll(userByAge())

排序和分页

sort类和Page接口,Pageable接口

List findByName(String name, Sort sort);

List findByName(String name, Pageable pageable);
userRepository.findByName("张三",new Sort(Sort.Direction.ASC,"AGE"));
userRepository.findByName("张三",new PageRequest(0,10));

 

你可能感兴趣的:(java)