【问题标题】:How do I configure (XML) QueryDSL to be used with Spring Data and Spring MVC?如何配置 (XML) QueryDSL 以与 Spring Data 和 Spring MVC 一起使用?
【发布时间】:2015-11-28 18:04:34
【问题描述】:

为那些希望使用 XML 配置配置 Spring MVC、Spring Data 和 QueryDSL 的人提供快速参考。

【问题讨论】:

    标签: spring-mvc spring-data spring-data-jpa querydsl


    【解决方案1】:

    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";
    }
    

    然后您可以像这样查询您的存储库:

    GET /foo?bar=baz
    

    假设barfoo 的属性

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 2016-10-21
      • 2020-01-18
      • 2014-09-22
      • 2014-03-16
      • 2017-11-24
      • 2012-11-09
      • 2015-11-12
      • 1970-01-01
      相关资源
      最近更新 更多