栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring Data JPA自定义存储库,如何应用逻辑

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Data JPA自定义存储库,如何应用逻辑

您正在寻找的是规范模式,以下将与Spring Data JPA进行讨论:

https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-
and-querydsl/

以及关于每个查询具有查询方法的说明:

尽管这种方法确实很方便(您甚至不必编写一行实现代码即可执行查询),但它有两个缺点:首先,由于-,对于较大的应用程序,查询方法的数量可能会增加。第二点-
查询定义了一组固定的条件。为避免这两个缺点,如果您能提出一组可以动态组合以构建查询的原子谓词,这不是很酷吗?

您可以使用JPA标准API或QueryDSL来实现规范模式。使用后者,就像让您的存储库扩展以下接口一样容易:

http://docs.spring.io/spring-
data/commons/docs/current/api/org/springframework/data/querydsl/QueryDslPredicateExecutor.html

并将对Querydsl的支持添加到您的项目中。对于Maven项目,您只需要将以下配置添加到POM。该插件将自动生成构造谓词所需的Query类,然后您可以使用任何参数组合调用存储库的以下方法:

Iterable<T> findAll(com.querydsl.core.types.OrderSpecifier<?>... orders)Iterable<T> findAll(com.querydsl.core.types.Predicate predicate)Iterable<T> findAll(com.querydsl.core.types.Predicate predicate, com.querydsl.core.types.OrderSpecifier<?>... orders)Page<T> findAll(com.querydsl.core.types.Predicate predicate, Pageable pageable)Iterable<T> findAll(com.querydsl.core.types.Predicate predicate, Sort sort)T   findOne(com.querydsl.core.types.Predicate predicate)

使用这种方法,您的PatientRepository就会变得简单:

PatientRepository extends JpaRepository<Patient, Long>, QueryDslLPredicateExecutor<Patient> {   // no query methods needed}

请注意,Spring Data
Gosling发行版还添加了对将HTTP参数自动绑定到QueryDSL谓词的支持,因此您还可以删除Filter并让Spring Data端到端处理所有内容。

https://spring.io/blog/2015/09/04/what-s-new-in-spring-data-release-
gosling#querydsl-web-support

这里有一些示例显示了使用各种参数调用一种查询方法:

http://codingdict.com/questions/54783

Maven设置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    .....    <properties>        <querydsl.version>4.1.3</querydsl.version>    </properties>    <dependencies>        .....        <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> <version>${querydsl.version}</version>        </dependency>        <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>${querydsl.version}</version>        </dependency>    </dependencies>    <build>        <plugins>.... <plugin>     <groupId>com.mysema.maven</groupId>     <artifactId>apt-maven-plugin</artifactId>     <version>1.1.3</version>     <executions>         <execution>  <goals>      <goal>process</goal>  </goals>  <configuration>      <outputDirectory>target/generated-sources/java</outputDirectory>      <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>  </configuration>         </execution>     </executions> </plugin>        </plugins>    </build></project>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570924.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号