Querydsl结构化查询之jpa

2023-11-18 10:03:04 浏览数 (2)

前言碎语

Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句。它采用API代替拼凑字符串来构造查询语句,不仅可以结合jpa等用来查询关系型数据,还提供了相关的api用来查询mongodb,lucene的数据

相关地址

官网地址:http://www.querydsl.com/

github项目地址:https://github.com/querydsl/querydsl

开发指南:http://www.querydsl.com/static/querydsl/latest/reference/pdf

进入正题

下面主要描述如何在使用jpa的项目中,整合Querydsl,带来更好的结构化的更灵活的查询

1.首先加入maven依赖

        <dependency>             <groupId>com.querydsl</groupId>             <artifactId>querydsl-apt</artifactId>             <version>4.1.4</version>         </dependency>         <dependency>             <groupId>com.querydsl</groupId>             <artifactId>querydsl-jpa</artifactId>             <version>4.1.4</version>         </dependency>

2.添加build插件,插件会帮你把标识为@Entity的实体生成相关的查询对象,比如User,会生成QUser查询对象

<project>   <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>

3.完成以上步骤,就可以查询初体验了(别忘了,build下项目生成查询实体)

代码语言:javascript复制
        QCaFileManage qfileManage=QCaFileManage.caFileManage;//插件生成的查询对象
        QMgmPtpAttachs mgmPtpAttachs=QMgmPtpAttachs.mgmPtpAttachs;//插件生成的查询对象
        JPAQuery jpa=new JPAQuery(em);//em是jpa EntityManager 对象
        jpa.from(qfileManage,mgmPtpAttachs).where(qfileManage.name.eq("a"),mgmPtpAttachs.attachNo.like("bbb"));
        List result=jpa.fetchResults().getResults();

        CaFileManage fileManage=new JPAQueryFactory(em).selectFrom(qfileManage).where(qfileManage.user.in("")).fetchFirst();

后记:这里只是一个简单查询实例,实际使用时你会发现Querydsl的链式api很灵活丰富,用起来很爽

0 人点赞