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