如何配置 (XML) QueryDSL 以与 Spring Data 和 Spring MVC 一起使用? [英] How do I configure (XML) QueryDSL to be used with Spring Data and Spring MVC?

查看:67
本文介绍了如何配置 (XML) QueryDSL 以与 Spring Data 和 Spring MVC 一起使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

希望使用 XML 配置配置 Spring MVC、Spring Data 和 QueryDSL 的快速参考.

Quick reference for those looking to configure Spring MVC, Spring Data, and QueryDSL using XML config.

推荐答案

pom.xml 中:

<properties>
    <querydsl.version>3.6.7</querydsl.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.1</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.9.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>com.mysema.querydsl</groupId>
        <artifactId>querydsl-apt</artifactId>
        <version>${querydsl.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.mysema.querydsl</groupId>
        <artifactId>querydsl-jpa</artifactId>
        <version>${querydsl.version}</version>
    </dependency>

</dependencies>

<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.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

mvc-dispatcher-servlet.xml中:

<bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean" id="conversionService"/>

<mvc:annotation-driven conversion-service="conversionService">
  <mvc:argument-resolvers>
    <bean class="org.springframework.data.web.querydsl.QuerydslPredicateArgumentResolver">
      <constructor-arg>
        <bean class="org.springframework.data.querydsl.binding.QuerydslBindingsFactory">
          <constructor-arg>
            <value type="org.springframework.data.querydsl.SimpleEntityPathResolver">INSTANCE</value>
          </constructor-arg>
        </bean>
      </constructor-arg>
      <constructor-arg ref="conversionService"/>
    </bean>
  </mvc:argument-resolvers>
</mvc:annotation-driven>

FooRepository.java中:

public interface FooRepository extends JpaRepository<Foo, Long>, QueryDslPredicateExecutor<Foo> {

}

FooController.java中:

@RequestMapping("/foo")
String getPage(
  @QuerydslPredicate(root = Foo.class) Predicate predicate, 
  Pageable pageable, 
  Model model
) {

    Page<Foo> page = fooRepository.findAll(predicate, pageable);

    model.addAttribute("page", page);

    return "foo/index";
}

然后你可以像这样查询你的仓库:

Then you can query your repository like this:

GET /foo?bar=baz

假设 barfoo

这篇关于如何配置 (XML) QueryDSL 以与 Spring Data 和 Spring MVC 一起使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆