Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中传递可调用参数值的最佳方法_Java_Sql - Fatal编程技术网

java中传递可调用参数值的最佳方法

java中传递可调用参数值的最佳方法,java,sql,Java,Sql,我正在寻找将值从可调用参数对象传递到单独变量的最佳实践 我使用一个可调用参数的对象将值传递给变量。我用数字来表示每个参数的值。有没有更有效的方法 //为可协作参数创建新对象 CallableParameters params=新的CallableParameters(); //传递输入值 addParamIn(ID(),Types.INTEGER); addParamIn(NUMBER(),Types.INTEGER); //返回输出值 addParamIn(CITY(),Types.VARCH

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

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

//为可协作参数创建新对象
CallableParameters params=新的CallableParameters();
//传递输入值
addParamIn(ID(),Types.INTEGER);
addParamIn(NUMBER(),Types.INTEGER);
//返回输出值
addParamIn(CITY(),Types.VARCHAR);
addParamIn(YEAR(),Types.INTEGER);
//执行COLLABLE语句以运行存储过程
CallableStatement.executeCallable(callableName、params、conn);
然后我尝试将值传递给变量,如下所示:

String CITY=(整数)params.getParams().get(3.getParamValue();
int YEAR=(字符串)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() {...} 
}

我想这是品味的问题

您可以为每个字段创建一个带有条目的枚举,以及相应的getter/setter方法。这是更具可读性还是更优雅还有争议。我很喜欢。问得好,但答案是基于观点的。CallableParameters和executeCallable方法是您的API。不是java内置的JDBCAPI。您的编码方式取决于API的设计方式。。。。。Java CallableStatement提供API以按名称获取输出参数…@nicomp它只是基于观点,还是有速度、可靠性等因素与Java体系结构有关(我不知道)?@Loc是否有关于选择巫婆解决方案的一般指南?除了人为错误之外,使用数字而不是枚举是否还有其他含义?这只是口味的问题吗?我认为使用这种语法而不是getter和setter可能会有影响,因为您可以轻松地更改变量,而无需更新调用的数量
for (ParameterSetter setter : ParameterSetter.values()) {
    setter.accept(yourParameterObject);
}