第一章:Maven环境下如何配置QueryDSL环境

QueryDSL是一个通用的查询框架,框架的核心原则是创建安全类型的查询,开始QueryDSL仅支持Hibernate(HQL),在不断开源人士加入QueryDSL团队后,陆续发布了针对JPA,JDO,JDBC,Lucene,Hibernate Search,MangoDB,Collections 和RDF(Relational Data Format) Bean等。

本章目标

我们本系列的章节主要使用QueryDSL与SpringDataJPA在SpringBoot开发环境下进行整合使用,目前SpringDataJPA与QueryDSL整合可以说完美的结合,一个完美的结合你没有理由拒绝使用他们来完成企业级项目的开发。下面我们先使用idea开发工具构建一个maven项目,并将QueryDSL所需要的依赖以及插件配置进行讲解。

构建项目

我们使用idea创建一个SpringBoot项目,并添加Web、JPA、MySQL等依赖,pom配置文件如下代码块所示:

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>com.yuqiyu.querydsl.sample</groupId>
    <artifactId>chapter1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>chapter1</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <!--<scope>provided</scope>--> <!--这里一定要注释,否则使用Application方式运行异常.-->
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

可以看到上面的代码我们项目基础已经搭建完成,下面我们引入QueryDSL的相关maven依赖,添加依赖如下代码块所示:

<!--queryDSL-->
  <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>
    <scope>provided</scope>
  </dependency>

这里我们仅引入QueryDSL的JPA与APT相关的依赖就可以使用了。由于QueryDSL框架需要使用插件为我们配置了@Entity注解的实体自动对应创建QBean来作为查询时的条件以及自动生成QPath,下面我们需要修改pom.xml配置文件添加QueryDSL插件,如下代码块所示:

<build>
    <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!--添加QueryDSL插件支持-->
            <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>

插件列表内的第一个插件是SpringBoot为我们自动自动添加的,是SpringBoot相关maven的依赖插件。而下面的插件就是我们添加的相关QueryDSL的插件,该插件会自动扫描项目内配置了@Entity的实体类,并根据实体的内定义的字段以及关联类通过JPAAnnotationProcessor自动创建Q[实体类名称]的查询实体,创建完成后会将实体存放到我们配置outputDirectory属性目录下。

总结

至此我们本章的内容已经讲解完毕了,本章主要内容是我们在SpringBoot架构下如何配置QueryDSL的Maven环境,本系列项目是相当于SpringBoot系列文章的延伸,后期的文章讲解也是全部建立在SpringBoot框架上。 本章代码已经上传到码云: SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter SpringCloud配套源码地址:https://gitee.com/hengboy/spring-cloud-chapter SpringBoot相关系列文章请访问:目录:SpringBoot学习目录 QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录 SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录 感谢阅读!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

古语云:工欲善其事必先利其器 --> Eclipse开发环境配置

淘淘商城系统使用java7开发,使用jdk1.7.0 _80版本开发,安装jdk1.7步骤如下图所示: 第一步:在oracle官网下载跟系统相匹配的jdk,如下...

842
来自专栏吴柯的运维笔记

Linux文件权限的更改:理解第一,命令次之

Linux文件权限的更改: -Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。 -文件或目录的访问权...

2344
来自专栏肖洒的博客

Web(一):概述

学Python也有一段时间了,学完基本语法后整个人都蒙了。没有什么可以来练手,感觉什么也不会。 准备主攻爬虫和Web。 昨晚学长刚给讲了MVC,回来看到Pyt...

782
来自专栏Spring相关

net之socket的通信

774
来自专栏北京马哥教育

linux系统安装过程

linux系统安装过程 大家都知道目前在商业服务器操作系统端,linux操作系统占的比例非常大,但是如果自己要想自己在网络安全系统方面有所作为,必须得把linu...

2958
来自专栏python学习之旅

Python Appium笔记(一):Appium Android环境配置及示例

1565
来自专栏网络

web调试工具——Fiddler使用介绍(二)

一、Fiddler断点设置 设置断点是Fiddler最强大的功能之一,在设置好断点后,Fiddler会捕捉所有经过的消息,我们可以任意修改HTTP请求信息,包括...

1829
来自专栏王小雷

React-Native-Android-Studio整合开发+环境配置+官方实例

linux下React Native开发环境搭建,使用Android-studio工具进行React Native整合开发。 参考React Native的...

4709
来自专栏Zachary46

Android使用Jenkins自动化构建测试打包apk

Jenkins这东西搭建起来真是一点也不省心啊,看着别人的教程摸着石头过河,配置的东西有点多啊,稍有不慎,就构建不成功啦!即使步骤跟别人一样也会报各种乱七八糟的...

3512
来自专栏向治洪

解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题

对于这个问题,我相信我的方法已经能帮90%的人解决了! 当你用Eclipse运行web项目的时候,你就会看到控制台出现: WARNING: [SetPrope...

2267

扫码关注云+社区