springDataJpa的概述
springDataJpa的入门操作
- 搭建环境
- 创建工程导入坐标
- 配置spring的配置文件(配置spring data jpa的整合)
- 编写实体类(Customer),使用jpa注解配置映射关系
- 只需要编写dao层接口,不需要编写dao层接口的实现类
- dao层接口规范
- 需要继承两个接口(JpaRepository<操作的实体类类型,实体类中主键属性的类型>,JpaSpecificationExecutor<操作的实体类类型>)
- 需要提供相应的泛型
- findOn(id)
- save(customer)
- delete(id)
- findAll()
springDataJpa的运行过程和原理剖析
- 通过JdkDynamicAopProxy的invoke方法创建了一个动态代理对象
- SimpleJpaRepository当中封装了JPA的操作(借助JPA的api完成数据库的CRUD)
- 通过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开头:代表查询
- 对象中属性名称首字母大写,含义:根据属性名称进行查询