春天数据jpa的使用方法

  

春数据jpa的使用方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

(1)什么是规范

规范是springDateJpa中的一个接口,他是用于当jpa的一些基本CRUD操作的扩展,可以把他理解成一个春天jpa的复杂查询接口。其次我们需要了解标准查询,这是是一种类型安全和更面向对象的查询。而春天数据jpa支持JPA2.0的标准查询,相应的接口是JpaSpecificationExecutor。

而JpaSpecificationExecutor这个接口基本是围绕着规范接口来定义的,规范接口中只定义了如下一个方法:

谓词toPredicate (Root根,CriteriaQuery<及# 63;比;查询,querybuilder cb);

<强>标准查询基本概念:

标准查询是以元模型的概念为基础的,元模型是为具体持久化单元的受管实体定义的,这些实体可以是实体类,嵌入类或者映射的父类。

<强> CriteriaQuery接口:

代表一个特定的顶层查询对象,它包含着查询的各个部分,比如:选择,,,组,按等注意:CriteriaQuery对象只对实体类型或嵌入式类型的标准查询起作用。

<强>根:

代表标准查询的根对象,标准查询的查询根定义了实体类型,能为将来导航获得想要的结果,它与SQL查询中从子的句类似。
根实例是类型化的,且定义了查询的从子句中能够出现的类型.root代表查询的实体类,查询可以从中得到根对象,告诉jpa查询哪一个实体类,还可以添加查询条件,还可以结合EntityManager对象得到最终查询的TypedQuery对象。

<强> querybuilder接口:

用来构建CritiaQuery的构建器对象谓词:一个简单或复杂的谓词类型,其实就相当于条件或者是条件组合。可通过EntityManager。getCriteriaBuilder而得。

maven的依赖继续使用上一章的就可以,这里修改一下实体类和控制器层。

请求实体类:

@ data   公开课AccountRequest {//从第几页开始   私人整数页面;//每一页查询多少   私人整数限制;      私人字符串id;      私人字符串名称;      私人字符串pwd;      私人字符串邮件;      私人整数[]类型;      }

实体类:

@ data   @ entity   @ table (name=癮ccount")   @ToString   @EntityListeners (AuditingEntityListener.class)   公共类账户{      @ id   @GenericGenerator (name=癷dGenerator"策略=皍uid")   @GeneratedValue(发电机=癷dGenerator")   私人字符串id;      @ column (name=皍sername"独特=true, nullable=false,长度=64)   私人字符串的用户名;      @ column (name=皃assword" nullable=false,长度=64)   私人密码字符串;      @ column (name=癳mail"长度=64)   私人字符串邮件;      @ column (name=皌ype")   私人短类型;      @CreatedDate   @ column (name=癱reate_time" nullable=false)   私人LocalDateTime createTime;      }

库层:

公共接口AccountRepository延伸JpaRepository<帐户,String>, JpaSpecificationExecutor{}

控制器层(还是直接略过服务层)

@ autowired   私人AccountRepository库;         @PostMapping (“/get")   公共Listget (@RequestBody AccountRequest请求){   Specification规范=new Specification () {      @Override   公共谓词toPredicate (Root根,CriteriaQuery<及# 63;比;criteriaQuery querybuilder builder) {//所有的断言及条件   List谓词=new ArrayList<在();//精确匹配id pwd   如果(request.getId () !=null) {   predicates.add (builder.equal (root.get (“id") request.getId ()));   }   如果(request.getPwd () !=null) {   predicates.add (builder.equal (root.get (“password") request.getPwd ()));   }//模糊搜索的名字   如果(request.getName() !=零,,.equals ! request.getName () (“;”)) {   predicates.add (builder.like (root.get (“username"),“%”;+ request.getName () +“%”);   }   如果(request.getEmail() !=零,,.equals ! request.getEmail () (“;”)) {   predicates.add (builder.like (root.get (“email"),“%”;+ request.getEmail () +“%”);   }//在范围查询   如果(request.getTypes () !=null) {   CriteriaBuilder.In类型=builder.in (root.get (“type"));   (整数类型:request.getTypes ()) {   类型=types.value(类型);   }   predicates.add(类型);   }   返回builder.and(谓词。toArray(新谓词[predicates.size ())));   }   };   List

春天数据jpa的使用方法

Copyright © 2020-2023 feiqueyun.cn. All Rights Reserved. 肥雀云_南京肥雀信息技术有限公司版权所有 南京肥雀信息技术有限公司 苏ICP备16063723号-5