zoukankan      html  css  js  c++  java
  • 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的情况

     

  • 相关阅读:
    Android由一个activity 间隔5秒自动跳转到另外一个activity
    ZXing二维码的生成和解析
    JAVA生成条形码
    JAVA生成带Logo的二维码
    JAVA操作MongoDB数据库
    MongoDB数据库的简介及安装
    Redis在windows下的安装使用
    class关键字
    遍历器接口
    Promise对象
  • 原文地址:https://www.cnblogs.com/vhyc/p/12233265.html
Copyright © 2011-2022 走看看