springData和jpa

jpa总结:https://segmentfault.com/a/1190000015047290

  • ,使用了动态代理,我们的repositoryDao继承了simpleJapRepository implements jpaRepository,使用方法的同时,不用重写abstract   method
  • spring Data 两种polymorphism, 一种是静态多态spring data规制方法和注解,一种是创建自定义的语句
  • 两个概念,placeholder和动态添加语句
  • 拼接可以用string,也可以用criterialBuiler,最后createQuery

1, entity manager实现(动态)

2,沒有重载版本,jpaRepository自带可以,用crud不可以,

  jpaRepository extend pagingAndSortingRepository, so that It have the findAll method with sort or pageable as peremeter

  加了pageable能return一个page, 只带了sort只返回list

 

   默认sort method, parameter is null mean unsorted, default_direction = direction.asc

 

 

   多个排序条件,还有其他方式

 

 

3,jpaRepository的find规制,需要再dao显示重载

  start with findBy,可以随意添加分页, 沒有is,一开始的by就是is

 

 

 

 

 

4,@select注解, 需要再dao重载

 

 

 

5,JapSpecification实现(动态)(扩充findAll)

一目了然:https://www.jianshu.com/p/659e9715d01d

  有时候需要动态拼接语句,比如多条件查询中,要根据有无这个条件才添加  (mybatis可以用xml标签完成

 

 

前面使用 equal 直接使用path对象(属性),进行比较即可

但是 gt,lt,ge,le,like 不能直接使用path对象,要根据path对象指定比较的参数类型:path.as(类型的字节码对象),

root.get("title").as(String.class) ,获得一个属性,要specify class,= root.<String>get("title")

 

 

 

在雨燕中,有两种,一种是另一种的封装

 

 对比:都有需要列名,值,条件

然后和别的condition and or or在一起

最后添加order by,group by, asc这些

 

沒有用spring data下的原始方法,事实上,springdata就帮你干了这些

 

 

 

 

 

 

 in条件

 

 

 

 join (注意:不添加条件也是关联查询,强调一个条件

one to one

先获得主表的root的join,在通过这个join去增加条件

 

 

 one to many 

也一样的

 

 

 分组查询

 

 

 

4步曲替换(由于返回类型是tuple,所以只能自己写

获得CriteriaBuilder:entityManager.getCriteriaBuilder

获得query:criteriaBuilder.createQuery -> createTupleQuery( is same as

 

 

获得from:set root Object: Root<u> root = query.from(u.class)

添加predicate: criteriaBuilder.add predicate -> add group by

添加select:root或者select 一些root getpath

entityManager 添加 query: TypedQuery<Tuple> typedQuery = entityManager.createQuery(tupleQuery);

初步估计 Criteria.tuple和Multiselect是一样的

 

 

 

  root -> from -> path -> expression -> selection -> tupleElement

 

 子查询和自连接

自连接onetoone自己(其他不加

选出最大的(还有一些in的情况

 

 

 

 

 

posted on 2020-01-25 18:06  Kooing  阅读(237)  评论(0编辑  收藏  举报

导航