QueryDSL介绍

· QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。

· Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句,也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架。

借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。目前QueryDSL支持的平台包括 JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate SearchMONGODB

非常好的一个东西 防止数据库的差异 sql的写错

下面我们来怎么是用querydslspring整合 springquerdsl提供了 支持 那就是模板方式queryDslJdbcTemplate 封装了querydsl 的处理 怎么使用 我们下一张详细说明

第一步 我们pom要加入相关依赖 上一篇文章 已经加入了querydsl 还需要加入

<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jdbc-core</artifactId><version>1.0.0.RELEASE</version></dependency>

第二步 spring-jdbc.xml加入

<bean id="queryDslJdbcTemplate" class="org.springframework.data.jdbc.query.QueryDslJdbcTemplate">

   <constructor-arg ref="dataSource" />

</bean>

第三步 不得不提的就是querydsl 都是使用中间实体Qmodel 也就是querydslModel 这些实体是用工具生成的

生成方式 有好几种 第一种 插件方式 这种方式 注意的就是配置的生成文件目录一定要事先建好,还有个就是querydsl的注解

@QuerySupertype 在父类用

@QueryEntity 在类上用

在相应的实体上加了上述注解后 再在pom.xml加入相应的插件

1.jdbc普通的方式

<plugin><groupId>com.mysema.maven</groupId>

                                <artifactId>apt-maven-plugin</artifactId>

                                <version>1.0.8</version>

                                <dependencies>

                                        <dependency>

                                                <groupId>com.mysema.querydsl</groupId>

                                                <artifactId>querydsl-apt</artifactId>

                                                <version>${querydsl.version}</version>

                                        </dependency>

                                </dependencies>

                                <executions>

                                        <execution>

                                                <phase>generate-sources</phase>

                                                <goals>

                                                        <goal>process</goal>

                                                </goals>

                                                <configuration>

          <outputDirectory>target/generated-sources/java</outputDirectory>//切记切记 这个目录一定要事先建好 否则无法生成qmodel

                                                        <processor>com.mysema.query.apt.QuerydslAnnotationProcessor</processor>

                                                </configuration>

                                        </execution>

                                </executions></plugin>

2 hibernate or jpa or spring data 的插件配置

HIBERNATE

 <plugin>

      <groupId>com.mysema.maven</groupId>

      <artifactId>maven-apt-plugin</artifactId>

      <version>0.3.2</version>

      <executions>

        <execution>

          <goals>

            <goal>process</goal>

          </goals>

          <configuration>

            <outputDirectory>target/generated-sources/java</outputDirectory>

            <processor> com.mysema.query.apt.hibernate.HibernateAnnotationProcessor</processor>

          </configuration>

        </execution>

      </executions>

    </plugin>

JPA

<plugin>

 

      <groupId>com.mysema.maven</groupId>

      <artifactId>maven-apt-plugin</artifactId>

      <version>0.3.2</version>

      <executions>

        <execution>

          <goals>

            <goal>process</goal>

          </goals>

          <configuration>

            <outputDirectory>target/generated-sources/java</outputDirectory>

            <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>

          </configuration>

        </execution>

      </executions>

    </plugin>

mongodb

<plugin>

      <groupId>com.mysema.maven</groupId>

      <artifactId>maven-apt-plugin</artifactId>

      <version>1.0</version>

      <executions>

        <execution>

          <goals>

            <goal>process</goal>

          </goals>

          <configuration>

            <outputDirectory>${generatedSources}<outputDirectory>

            <processor>com.mysema.query.mongodb.morphia.MorphiaAnnotationProcessor</processor>

          </configuration>

        </execution>

      </executions>

    </plugin>

第二种 数据方式 个人最推荐 也是最好的

在数据库中建好生成表 然后写一个工具类 工具类只要一下几句

MetaDataExporter exporter = new MetaDataExporter();

exporter.setPackageName("com.cn21.talk.qmodel");

exporter.setTargetFolder(new File("src/main/java"));

exporter.setTableNamePattern(tabName);

exporter.export(conn.getMetaData());

执行生成后的Qmodel如图所示

至此 整合querydsl已经全部完成 下一张 将开启querydsl使用教程篇章

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值