Java 如何更改结果集或列表中值的类型?
我有一个sql过程,我在groovy(java)中使用我想要的参数访问它,然后返回游标。在ReSultSet的帮助下,我将数据作为数据集返回。但我面临一个问题。表中的字段有3种类型:数字、字符串、日期。当我已经在groovy(java)中工作时,numeric被识别为一个带点的数字,因此,尽管数据库中的记录是正常的(没有“.0”),但最后我得到了带“.0”的数字。例如,在数据库中,字段是“10”,但在groovy(java)中运行时,我得到了“10.0” 我还尝试了第二种选择。我将数据放在“列表”中,它是这样工作的,但在本例中,要以数据集的形式返回数据,我必须形成“名称”、“类型”,然后只传递值其类型必须与“类型”对应。因此,已经存在两个问题:Java 如何更改结果集或列表中值的类型?,java,groovy,resultset,Java,Groovy,Resultset,我有一个sql过程,我在groovy(java)中使用我想要的参数访问它,然后返回游标。在ReSultSet的帮助下,我将数据作为数据集返回。但我面临一个问题。表中的字段有3种类型:数字、字符串、日期。当我已经在groovy(java)中工作时,numeric被识别为一个带点的数字,因此,尽管数据库中的记录是正常的(没有“.0”),但最后我得到了带“.0”的数字。例如,在数据库中,字段是“10”,但在groovy(java)中运行时,我得到了“10.0” 我还尝试了第二种选择。我将数据放在“列表
OutParameter CUR\u SERVICE=new OutParameter(){
公共int getType(){
返回OracleTypes.CURSOR;
}
}
试一试{
call(“{call test.test(a=>?,b=>?,c=>?,pcur=>?)}”
,[a,
B
C
CUR_服务
]) {
ResultSet行\服务->//reader.readResultSet(行\服务)
ResultSetMetaData md=row_service.getMetaData();
int columns=md.getColumnCount();
ArrayList=新建ArrayList();
while(row_service.next()){
HashMap行=新的HashMap(列);
对于(int i=1;i
res.addAll map.keySet()
物件
}托利斯先生()
def typeMap=[:].withDefault{key->“String”}
list.each{map->
map.each{键,值->
如果(值!=null){
typeMap[key]=values.getClass().simpleName
}
}
}
def types=names.collect{name->typeMap[name]}
println(类型)
reader.outputLinesSetHeaders(名称、类型)
list.each{e->
reader.outputLines names.collect{e[it]}
}
reader.outputLinesEnd();
返回null;
}
}
简要介绍我需要的:
有几种方法可以做到这一点。对于(1),可以从整数中创建值,如下所示:
BigDecimal x = new BigDecimal(55);
Integer y = new Integer(3);
y = new Integer(x.intValue());
For(2)myTimestamp.toString()返回可以解析的字符串
OutParameter CUR_SERVICE = new OutParameter() {
public int getType() {
return OracleTypes.CURSOR;
}
}
try {
sql.call("{call test.test (a => ?, b => ?, c => ?, pcur => ?)}"
, [a,
b,
c,
CUR_SERVICE
]) {
ResultSet row_service -> //reader.readResultSet(row_service)
ResultSetMetaData md = row_service.getMetaData();
int columns = md.getColumnCount();
ArrayList list = new ArrayList();
while (row_service.next()){
HashMap row = new HashMap(columns);
for(int i=1; i<=columns; ++i){
row.put(md.getColumnName(i),row_service.getObject(i));
def aabbcc = md.getColumnName(i)
aabbcc
}
list.add(row);
}
List names = list.inject(new LinkedHashSet<>()) { res, map ->
res.addAll map.keySet()
res
}.toList()
def typeMap = [:].withDefault { key -> "String" }
list.each { map ->
map.each { key, values ->
if (values != null) {
typeMap[key] = values.getClass().simpleName
}
}
}
def types = names.collect { name -> typeMap[name] }
println(types)
reader.outputLinesSetHeaders(names, types)
list.each { e ->
reader.outputLines names.collect { e[it] }
}
reader.outputLinesEnd();
return null;
}
}
BigDecimal x = new BigDecimal(55);
Integer y = new Integer(3);
y = new Integer(x.intValue());