最近在做项目,所以时间比较紧凑,闲暇之余,将最近用到的spring-data-jpa技术整理一下,和大家分享.
这次鄙人就不来国际惯例了,直接介绍.
一:什么是JPA:
JPA是一套规范,不是产品.
JPA是 sun公司提出的java持久化规范,它的出现是为了简化现有的持久化操作,并整合orm技术.
查询语句:JPQL 面向对象而非面向过程的查询语言,避免程序和SQL语句紧密耦合.
二:spring-data-JPA
它是在JPA规范下提供了Repository层的实现.
CrudRepository:提供了简单的crud操作的方法.
PagingAndSortingRepository 增加了分页和排序的方法
SimpleJpaRepository:提供了方法的实现.
我们可以直接继承接口,而不用写dao层的实现类去完成持久化操作.
这是一个合同的持久化接口,直接继承JpaRepository就能实现基本的CRUD操作,利用的就是JpaRepository的实现类SimpleJpaRepository.
SimpleJpaRepository里面实现了许多方法,我下面列举几个出来.
通过jpa创建query查询我学了两种方式
一是:解析方法名:
从网上抠图
注意:返回的是对象不是object数组,只有利用原生sql语句查询的时候返回的是object数组
第二种是注解的方式
@Query
@Modifying
@Param
如果使用update语句,必须用modifying配置在query上面
创建query的策略:
有三种: 'create' :只通过解析方法名的方式创建
'use-declared-query' 这种我没去学习,所以不了解,以后在说
'create-if-not-found' 默认的, 如果没有@query,就用@namequery,如果还没有,就用解析方法名的方式
可以在spring的配置文件中 jpa-repository中设置策略.
Spring-data-Jpa的criteria查询
需要自定义的接口继承JpaSpecificationExecutor接口
我认为这里用到的是一个策略模式-->就是findAll(spec)方法和它相关的方法
自己去实现接口里面需要的算法--在我们这里就是自己去添加查询条件
可以添加多个查询条件 用 cb.and cb.or
下图有我写的一个方法,里面利用到了criteria查询
好了就简单介绍这里了,详细的API和内容可以参考大神们的作品.
今晚巴萨战皇马,巴萨必胜!!!!
下次我会介绍数据库三大范式和反三范式
还有之前没有完成的内容会慢慢补全 忙啊.....