我正在使用spring boot和NamedParameterJdbcTemplate来查询Oracle数据库。没有波多黎各人波哥大,拉斯塔布拉斯山脉,迪纳米卡门特和拉斯塔纳斯,没有儿子辛普雷斯·拉斯·马斯玛。.
TABLE_A example:
id -> RAW(16)
name -> String
price -> 12.23
用于检索数据的代码为:
List<Map<Sting, Object>> result = jdbcTemplate.queryForList("SELECT * FROM TABLE_A WHERE id = ?", id);
问题出在id Raw列上。 result.get(0).get("id")
给了我一个字节[],我无法对其进行解码或将其转换为适当的字符串,例如“ C195DF876C1E4014AF040D1566F5791C”。
new String(result.get(0).get("id")) not work.
new String(result.get(0).get("id"), "UTF-8") not work.
一些想法?
答案 0 :(得分:0)
如果您希望从16个字节中提取32个字符(C195DF876C1E4014AF040D1566F5791C
),则很可能需要十六进制编码的String
:
StringBuilder sb = new StringBuilder();
byte[] id = { 0x1F, 2, 0x2C, 4};
for (byte b : id) {
String hex = Integer.toHexString(Byte.toUnsignedInt(b)).toUpperCase();
sb.append(((hex.length() == 2) ? hex : "0" + hex));
}
System.out.println(sb.toString()); // 1F022C04
答案 1 :(得分:0)
您可以使用https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/DatatypeConverter.html#printHexBinary-byte:A-将字节数组转换为您要使用的十六进制表示形式。