前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Querydsl结构化查询之jpa

Querydsl结构化查询之jpa

作者头像
kl博主
发布2023-11-18 10:03:04
1850
发布2023-11-18 10:03:04
举报
文章被收录于专栏:kl的专栏kl的专栏

前言碎语

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很灵活丰富,用起来很爽

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档