SpringDataJpa总结

1springdatajpa初识

1.1 搭建环境 – 搭建spring环境+springdatajpa的包(还有jpa内容)

      <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>${spring-data-jpa.version}</version>
        </dependency>

1.2 测试springdatajpa的程序

(1) 写一个接口继承JpaRepository  -- spring容器会帮我们创建实现类
 (2) 我们就可以完成增删改查

1.3 springdatajpa认识

springdatajpa 他是springdata下面其中一个项目,简化jpa的开发,快速高效去使用jpa

2springdatajpa的用法(掌握)

(1)完成crud

​ save(T t) – 可以保存可以修改 --如果对象里面由id 就修改,否则就新增

​ findAll() – 查询所有的数据

​ findAll(Iterable it) --》批量查询 — where xxx in(1,2,3)

​ findOne()–查询一条数据

​ delete(Long id) --》删除一条数据

​ deleteInBatch(Iterable it) --》批量删除 --先查询出来 -->where id =1 or id =2

​ delete(Iterable it) --》一条一条的删除数据 --效率低下

(2)排序和分页

​ findAll(Sort sort) —》支持排序

​ findAll(Pageable pageable)–>分页和排序都支持

(3)查询写法

​ 规则来查询 —findEmployeeByUsernameAndAge(String username,Integer age)

​ 规则下来查询文档

 //想通过员工的名称来查询员工 -- 如果按照一定的规范来写 底层就会解析完成
    List<Employee> findEmployeeByUsername(String username); //where username = '222'
    //LIKE查询
    List<Employee> findEmployeeByUsernameLike(String username); //where username like '%2222%'

​ Query注解查询 --写jpql 或者sql

	 @Query("select o from Employee  o where o.username like ?1 ")
    List<Employee> findEmpByUsername(String username);

    //根据顺序查询
    @Query("select o from Employee o where  o.username like ?1 and o.email like ?2")
    List<Employee> query02(String username1,String email1);
    
     //根据名称来查询
    @Query("select o from Employee o where  o.username like :username and o.email like :email")
    List<Employee> query03(@Param("username") String username1, @Param("email")String email1);

    //对原生sql语句
    @Query(value="select count(*) from employee ",nativeQuery=true)
    Long query04();

(4)JPA规则(动态sql)的查询

​ 步骤:

​ (a)继承该JpaSpecificationExecutor 接口

​ (b)测试

原生写法:(了解 不好写 不推荐使用)

public Predicate toPredicate(Root<Employee> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
                //拿到操作字段
                Path path1 = root.get("username");
                Path path2 = root.get("age");
                //构建查询 like
                Predicate p1 = cb.like(path1, "%1%");
                Predicate p2 = cb.gt(path2, 25);
                //where username like %1% and age > 25
                CriteriaQuery<?> where = cq.where(p1, p2);
                return where.getRestriction();
 }

(6) springdatajpa的查询sql的插件

​ (a)引入第三方jar包

​ (b) 继承 JpaSpecificationExecutor 接口

​ (c)使用

  Specification<Employee> spec = Specifications.<Employee>and()
                .like(StringUtils.isNotBlank(employee.getUsername()), "username", employee.getUsername())
                .gt(employee.getAge() != null, "age", employee.getAge())
                .build();

(7)BaseQuery和EmployeeQuery这些抽取(掌握)

BaseQuery(抽取分页 和排序 )

EmployeeQuery(组装sql方法)

猜你喜欢

转载自blog.csdn.net/weixin_44671176/article/details/98261507