Java 在PrepareStatement中设置参数是否有任何通用的替代方案
我正在开发一个数据库应用程序。目前我正在使用java.sql结合H2嵌入式数据库。我想发展道路。Java 在PrepareStatement中设置参数是否有任何通用的替代方案,java,sql,performance,generics,h2,Java,Sql,Performance,Generics,H2,我正在开发一个数据库应用程序。目前我正在使用java.sql结合H2嵌入式数据库。我想发展道路。 因此,我设置了一个可重用的数据库行类和数据库属性类,如下所示: 公共类数据库属性{ 私有字符串PropertyName; 私人T值; 私有布尔标识符 public DatabaseProperty(String PropertyName, T Value, boolean identifier) { this.PropertyName = PropertyName; this.Val
因此,我设置了一个可重用的数据库行类和数据库属性类,如下所示: 公共类数据库属性{ 私有字符串PropertyName; 私人T值; 私有布尔标识符
public DatabaseProperty(String PropertyName, T Value, boolean identifier) {
this.PropertyName = PropertyName;
this.Value = Value;
this.Identifier = identifier;
}
public String getPropertyName() {
return PropertyName;
}
public T getValue() {
return Value;
}
public void setValue(T Value) {
this.Value = Value;
}
public boolean isIdentifier() {
return Identifier;
}
}
而且。。。
公共类数据库行{
保护连接DBConnection;
受保护的字符串表名;
受保护的HashSet=新HashSet()
代码还在继续…问题是我没有基于泛型的方法来设置PeparedStatement类中的参数,而是有setString(int index,String s)等。。 请帮助我克服这一困难。。 是否有任何面向对象的包装器可用,如PHP?使用这些选项在性能和编码易用性之间是否有任何权衡?尝试使用以下方法:
ps.setObject(index, object);
它应该适用于索引不为空的所有情况。我认为这对您的情况来说不是问题。
如果对象为null,则需要设置类型
ps.setObject(index, null, type);
可以从参数元数据对象获取的类型:
ParameterMetaData meta=ps.getParameterMetaData();
int type = meta.getParameterType(index);
谢谢@jarrodd roberson纠正我的错误。
ParameterMetaData meta=ps.getParameterMetaData();
int type = meta.getParameterType(index);