首页 > 解决方案 > 如何在 Spring Data JDBC 中使用许多可选的查询参数?

问题描述

我们希望使用存储在 POJO 中的许多可选搜索条件来查询表。

public class TemperatureMeterCriteria {

    private String state;
    private String title;
    private LocalDate date;
    private Year year;
    private Integer month;
    private Integer week;
    private LocalDate startDate;
    private LocalDate endDate;
    private DateQuery dateQuery;
    private AlertLevel alertLevel;
    ...

}

使用 MyBatis 超级简单:https ://mybatis.org/mybatis-3/dynamic-sql.html

<select id="findTemperatureMeter" resultType="TemperatureMeter">
    SELECT * FROM TEMPERATURE_METER
    <where>
        <if test="state != null">
            state = #{state}
        </if>
        <if test="title != null">
            AND title like #{title}
        </if>
    ...
    </where>

但是,如何使用 Spring Data JDBC 做同样的事情?

https://docs.spring.io/spring-data/jdbc/docs/current/reference/html

标签: spring-data-jdbc

解决方案


目前唯一的选择是创建一个自定义方法并在内部使用第三方库,如 Querydsl、jOOQ 或 MyBatis。

尽管提供JdbcAggregateTemplate可以接受 a 的方法,但正在进行的工作Condition可以用于此目的。第一步(仅限删除)将作为https://github.com/spring-projects/spring-data-jdbc/issues/771的副作用到达


推荐阅读