springDataJpa的概述

springDataJpa的入门操作

  • 搭建环境
    • 创建工程导入坐标
    • 配置spring的配置文件(配置spring data jpa的整合)
    • 编写实体类(Customer),使用jpa注解配置映射关系
  • 只需要编写dao层接口,不需要编写dao层接口的实现类
  • dao层接口规范
    • 需要继承两个接口(JpaRepository<操作的实体类类型,实体类中主键属性的类型>,JpaSpecificationExecutor<操作的实体类类型>)
    • 需要提供相应的泛型
  • findOn(id)
  • save(customer)
  • delete(id)
  • findAll()

    springDataJpa的运行过程和原理剖析

  1. 通过JdkDynamicAopProxy的invoke方法创建了一个动态代理对象
  2. SimpleJpaRepository当中封装了JPA的操作(借助JPA的api完成数据库的CRUD)
  3. 通过hibernate完成数据库操作(封装了jdbc)

复杂查询

  • 借助接口中的定义好的方法完成查询
  • jpql的查询方式
    • jpql:jpa query language (jpa查询语言)
    • 特点:语法或关键字和sql语句类似
      • 查询的是类和类中的属性
    • 需要将jpql语句配置到接口方法上
      • 特有的查询:需要在dao接口上配置方法
      • 在新添加的方法上,使用注解的形式配置jpql查询的语句
      • 注解 :@Query
  • sql语句的查询
    • 特有的查询:需要在dao接口上配置方法
    • 在新添加的方法上,使用注解的形式配置sql查询的语句
    • 注解 :@Query
      • value:jpql语句 | sql语句
      • nativeQuery : false(jpql查询) | true(sql查询) 是否使用本地查询
  • 方法名称规则查询
    • 是对jpql查询,更深入的一层封装
    • 我们只需要按照SpringDataJpa提供的方法名称规则定义方法,不需要再去配置jpql语句,完成查询
    • findBy开头:代表查询
      • 对象中属性名称首字母大写,含义:根据属性名称进行查询