spring-data知识点记载

来源:互联网 发布:ipad能刷windows系统吗 编辑:程序博客网 时间:2024/06/05 19:18
spring data


1.Repository是一个空接口,
2.若我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个
  Repository Bean,纳入到ioc容器中,进而可以再该接口中定义满足一定规范的方法


3.Repository的子接口
CRUDRepository  实现了 CRUD
pagingAndSortintRepository  分页排序
JPARepository  实现了一组JPA 规范的方法
自定义的Repository 需要继承 JPARepository  


JPASpecificationExecutor不是repository


定义方法的规范
1.查询: 以find|read|get开头
  涉及条件查询时,条件的属性用条件关键字连接
要注意的是:条件属性以首字母大写
关键字包括:And,Or,Between,LessThan,GreaterThan,After,Before,isNull
           isNotNull,NotNull
           Like,NotLike,StartIngWith,EndingWith,Containing,OrderBy,
           Not,In,NotIn,TRUE,FALSE
支持属性的接连查询(但是需要在实体类中配置映射关系),若当前类存在符合条件的属性m则优先使用 当前类中属性,若需要使用级联属性,则属性间使用下划线连接


例如: getByLastnameStartIngWithAndAgeLessThan("x",12)


Query注解(可以自定义JPQL语句来实现更灵活的查询)
(可实现复杂查询,带子查询,比如最大最小等等)


1.使用占位符
SELECT p FROM PERSON p WHERE p.lastname = ?1 AND p.eamil = ?2
SELECT p FROM PERSON p WHERE p.lastname like %?1% AND p.eamil like %?2%
这个JPQL都对应 接口方法中 参数的 顺序


2.使用命名参数
SELECT p FROM PERSON p WHERE p.lastname = :lastname AND p.eamil = :email
SELECT p FROM PERSON p WHERE p.lastname like %:lastname% AND p.eamil like %:email%
这个JPQL都对应 接口方法中 参数的名称 以及在参数前需要加@Param("")注解


3.支持原生的SQL
@Query(vakue="SELECT count(id) FROM jpa_persons",nativeQuery=true)


@MODIFY注解(修饰代表这是一个 update或delete操作) 需要事务管理


@MODIFY 可以通过此方式 update,delete ,但不支持insert
@Query("UPDATE PERSON p SET p.email = :email WHERE id = :id")
原创粉丝点击