java - 使用 MappingSqlQuery 时用于 IN 条件的 SQL 参数类型

标签 java spring oracle jdbc spring-jdbc

当我使用 Spring JDBC 的 MappingSqlQuery 功能时,我无法为 IN 条件声明参数。我正在使用 Oracle 数据库。

我尝试使用 INTEGERARRAY 但没有结果。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.MappingSqlQuery;
import org.springframework.stereotype.Component;

import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.List;

@Component
public class TestQuery extends MappingSqlQuery<List<Object>> {
    @Autowired
    public TestQuery(DataSource ds) {
        super(ds, "SELECT test_id, name FROM test_table WHERE test_id IN (?)");

        /////////////////////////////////
        // What sql type to declare here?
        declareParameter(new SqlParameter(Types.));
        /////////////////////////////////

        compile();
    }

    @Override
    protected List<Object> mapRow(ResultSet rs, int i) throws SQLException {
        // ...
        return null;
    }
}

我想按如下方式使用这个 TestQuery 类的对象:

...
@Autowired
private TestQuery testQuery;

public List<Object> ...() {
    List<Integer> ids = Arrays.asList(36006122, 36004367);
    List<Object> objects = testQuery.findObject(ids);
    return objects;
}
...

我能找到的唯一信息在这里:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html#jdbc-in-clause 问题是他们没有在那里声明参数,而需要它才能使用 MappingSqlQuery 功能: org.springframework.dao.InvalidDataAccessApiUsageException:提供了 1 个参数,但在类中声明了 0 个参数

数据库类型:Oracle

Spring 版本:3.2.14.RELEASE

Oracle依赖版本:ojdbc7:12.1.0.1

编辑: 添加了 TestQuery 用法


与此同时,我通过放弃 MappingSqlQuery 并几乎使用它来修复它:https://stackoverflow.com/a/1327222/1019778结合 NamedParameterJdbcTemplate

最佳答案

类型 int 应该可以在这里工作。另外,如果你想传入一个 List 值,你可以这样做:
在 (:lst) 中的 some_column_name
然后你应该这样做以传递实际值:
query.setParameterList("lst", someJavaListOfValues);

关于java - 使用 MappingSqlQuery 时用于 IN 条件的 SQL 参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33282272/

相关文章:

java - 打印/导出 bootstable 数据表中的选定列

java - AsyncTask 得到一个错误的字符串参数

Java密码套件

java - JCombo + 覆盖 toString

java - 在 Spring 中,如何从 HTTPServletResponse 对象获取 HTML 作为字符串?

java - 在基于 Spring 的 Web 应用程序中处理 session 过期事件

java - 如何将 Hibernate 类映射转换为 Spring 应用程序上下文?

php - 我正在开发一个 php 购物 list 函数/api

java - 在 java 中将字符串转换为 oracle.sql.clob?

sql - Oracle Insert Select with order by