java - 从java中的可调用参数传递值的最佳方式

标签 java sql

我正在寻找有关将值从可调用参数对象传递到单独变量的最佳实践。

我正在使用可调用参数对象将值传递给变量。我使用数字来表示每个参数的值。有没有更有效的方法?

//CREATES NEW OBJECT FOR COLLABLE PARAMETERS
CallableParameters params = new CallableParameters();
//PASS INPUT VALUES
params.addParamIn(ID(),Types.INTEGER); 
params.addParamIn(NUMBER(),Types.INTEGER); 


//RETURN OUTPUT VALUES
params.addParamIn(CITY(),Types.VARCHAR); 
params.addParamIn(YEAR(),Types.INTEGER); 

//EXECUTE THE COLLABLE STATEMENT TO RUN THE STORED PROCEDURE
CallableStatement.executeCallable(callableName, params, conn); 

然后我尝试像这样将值传递给变量:

String CITY = (Integer)params.getParams().get(3).getParamValue();
int YEAR=(String)params.getParams().get(4).getParamValue();

有没有更好的方法来调用我的变量而不是 get(3),比如带名称的枚举之类的?

最佳答案

你可以创建枚举

enum ParameterSetter implements Consumer<CallableParameters> {
    ID {
        void accept(Callable Parameters setIn) {
            setIn.addParamIn(createId(), Types.INTEGER);
        } 
    }
    static String createId() {...} 
}

然后你可以像这样初始化你的参数

for (ParameterSetter setter : ParameterSetter.values()) {
    setter.accept(yourParameterObject);
}

我想这是一个品味问题。

关于java - 从java中的可调用参数传递值的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56705643/

相关文章:

java - 如何在android中实现地点选择器?

sql - 联合查询不起作用,导致 ORA-00904 错误

mysql - 为什么我的 MySQL Left Join 查询结果混淆了?

sql - 在创建 IDENTITY 的同一个 T-SQL 语句中获取 IDENTITY 值?

java - 从 hadoop 作业写入 Cassandra 时出现 ClassCast 错误

java - 如何为 Eclipse 编写插件?

sql - PostgreSQL- "ERROR: operator does not exist: interval <= date"

sql - Group By 似乎在简单的 Postgres 查询中增加了过多的计算量

java - 如何管理商业交易

java - junit 未找到 Web 应用程序上下文 : no ContextLoad Listener registered?