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