SpringDataJpa
1)概念:JPA规范的再次封装抽象;SpringData是Spring的一个子项目
2)IDEA配置自动导包
3)2.核心配置文件中
//包扫描
<jpa:repositories base-package="cn.itsource.yxb.repository"
//创建工厂对象
entity-manager-factory-ref="entityManagerFactory"
//创建事务注解管理
transaction-manager-ref="transactionManager"/>
4)继承接口
public interface EmployeeRepository extends JpaRepository<Employee,Long>
JpaRepository实现增删查改,排序和分页功能
①增删查改方法:findAll,findOne,save,delete,...
②分页方法:Pageable pageable = new PageRequest(第几页,每页条数);
Pageable pageable = new PageRequest(第几页,每页条数,sort);
③排序方法:Sort sort = new Sort(Sort.Direction.ASC,"id");//根据id来排序
5)Query注解:写jpql语句
6)jpa-spec插件 -> https://github.com/wenhao/jpa-spec
7)Query的抽取(高级查询)
①注意事项:用户的页数从1开始,我们的后台分页从0开始,定义有一个返回用户页数的方法
②将用户传过来的数据封装到query对象中(使用jpa-spec插件)
Spring Data框架
1.Repository(资源库):通过用来访问领域对象的一个类似集合的接口; 仅仅是一个标识,表明任何继承它的均为仓库接口类,方便Spring自动扫描识别
2.Spring Data中的几种Repository
①CrudRepository: 继承Repository,实现了一组CRUD相关的方法
②PagingAndSortingRepository: 继承CrudRepository,实现了一组分页排序相关的方法
③JpaRepository<T, ID extends Serializable> : 继承PagingAndSortingRepository,实现一组JPA规范相关的方法 (如果查询符合命名规范可以不用写实现)
④我们自己定义的XxxxRepository需要继承JpaRepository,这样我们的XxxxRepository接口就具备了通用的数据访问控制层的能力
⑤JpaSpecificationExecutor:提供一些复杂的查询的方法(通过Specification来定义查询条件)