Skip to main content
 首页 » 数据库

QueryDsl查询mongodb数据1

2022年07月19日149youxin

QueryDsl查询mongodb数据1

使用开发spring data MongoDB respository查询过程中,默认使用Query By Example非常不方便,Querydsl与无具体实现无关,比较灵活。本文简要介绍Querydsl,并配置gradle生成查询类,后续介绍相关查询使用。

Querydsl简介

Querydsl框架(http://www.querydsl.com)

Unified Queries for Java. 统一java查询语言,官方宣传特点为简洁、安全、易学。
Querydsl框架通过流畅的API让我们轻松使用静态类型构造类SQL查询,无需在字符串中拼接SQL或在xml文件中定义SQL。这些API衍生与实际的表或对象模型,但同时又是与存储和模型高度无关的,所以它允许为各种存储类型创建和使用查询API.它目前支持JPA、Hibernate、JDO、JDBC、Lucene、MongoDB等。功能的多样性是Spring Data集成Querydsl的主要原因,因为Spring Data也集成了多种类型的存储。

相比与其他构建查询方式有以下优势:
- 在IDE中代码完整
- 几乎没有语法上不允许的查询
- 域类型或属性被安全引用
- 可以更好重构域类型变化

查询元模型

当使用Querydsl时候,通常会从领域类中衍生出元模型,通过创建元模型会释放出Querydsl的全部能量,尤其是在属性的类型安全以及关键字引用方面。衍生机制基于Java6的注解处理工具(APT),能够挂接到编译器中并对源码甚至编译后的class文件进行处理。Querydsl提供了这种机制,可以通过maven或gradle插件生成查询类代码。这里使用gradle描述如何生成查询类。

gradle官网有两款插件,经测试com.ewerk.gradle.plugins:querydsl没有问题,脚本如下:

buildscript { 
    repositories { 
        maven { 
            url "https://plugins.gradle.org/m2/" 
        } 
    } 
    dependencies { 
        classpath "gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.9" 
    } 
} 
 
apply plugin: "com.ewerk.gradle.plugins.querydsl" 
 
querydsl { 
    // we use mongodb 
    springDataMongo = true 
    querydslSourcesDir = "$buildDir/generated/source/apt/main" 
}

配置脚本后,需要增加相关依赖。

compile group: 'com.querydsl', name: 'querydsl-mongodb', version: '4.1.4' 
compile group: 'com.querydsl', name: 'querydsl-apt', version: '4.1.4'

详细querydsl插件配置参考其github

idea环境配置

让idea启用Enable annotation processing。

Default Settings -> Build,Execution,Deployment -> Compiler -> Annotaion Processors

进入配置界面后,配置如下:

  • 启用Enable annotation processing
  • Store generated sources relative to: Module content root

生成查询类

经上述配置后,编译代码时,会在输出目录build中查看已经生成的查询类。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/78340738