gpt4 book ai didi

Java - 使用通用参数调用存储过程

转载 作者:行者123 更新时间:2023-12-04 05:42:16 25 4
gpt4 key购买 nike

我想调用一个存储过程(Oracle)。由于我的过程调用是动态的,我需要动态管理过程参数。
问题是我想避免使用 instanceof关键字,因为它不适用于主要类型。
有没有更简洁的方法来调用这样的过程?

    public void executeProcedure(StoredProcedure proc) {        
LinkedList<ProcedureParameter<?>> parameters = proc.getParameters();

CallableStatement statement = connection.prepareCall("{ call MY_PACKAGE.MY_PROCEDURE( ?, ?, ? ) }");

for (int i = 0; i < parameters.size(); i++) {
Object paramValue = parameters.get(i).getValue();

// Beginning of smelly code

if (paramValue instanceof String) {
statement.setString(i + 1, (String) paramValue);
}
else if (paramValue instanceof ...) {
...
}
else {
...
}

// End of smelly code
}

statement.execute();
}
    public class ProcedureParameter<E> {
private String name;
private E value;

public ProcedureParameter(String name) {
this.name = name;
}

public ProcedureParameter(String name, E value) {
this.name = name;
this.value = value;
}

// Getters and setters
}

谢谢你的任何想法。

最佳答案

我认为它可以帮助您在没有 instanceof 的情况下实现所需的功能:http://en.wikipedia.org/wiki/Visitor_pattern

关于Java - 使用通用参数调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11139647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com