Java 获取列表<;字符串>;使用SpringJDBCTemplate
我想使用SpringJava 获取列表<;字符串>;使用SpringJDBCTemplate,java,string,spring,jdbctemplate,Java,String,Spring,Jdbctemplate,我想使用SpringJdbcTemplate从数据库中获取String对象的列表: 这项工作: List<String> myList = this.logJdbcTemplate.query(this.dbQuery, new Object[] {this.someKey}, new RowMapper() { public Object mapRow(ResultSet resultSet, int i) throws SQLException { ret
JdbcTemplate
从数据库中获取String
对象的列表:
这项工作:
List<String> myList = this.logJdbcTemplate.query(this.dbQuery, new Object[] {this.someKey}, new RowMapper() {
public Object mapRow(ResultSet resultSet, int i) throws SQLException {
return resultSet.getString(1);
}
});
奇怪的是,当我在上面语句之后打印规则列表的size
时,返回的size
是4,这是从数据库返回的字符串数。但是,在调试期间进行检查时,列表中包含所有空白元素
有什么问题吗?要获得列表,请尝试以下方法
List<String> data= logJdbcTemplate.queryForList(query,String.class)
List data=logJdbcTemplate.queryForList(query,String.class)
使用BeanPropertyRowMapper
编写的代码不起作用的原因可能是(这是一个逻辑猜测),当您提供一个bean(比如User.class)时,Spring必须初始化该类(可能使用反射),然后用数据库提供的ResultSet
中的列名称映射所有字段
但对于String.class,它无法找到任何映射到结果集的字段。但是它已经创建了对象,这就是它返回4个空白对象的原因。为什么不尝试使用ResultSet
而不是这个BeanPropertyRowMapper
:
new ResultSetExtractor<List<String>>() {
@Override
public List<String> extractData(ResultSet rs) throws SQLException, DataAccessException {
List<String> result = new ArrayList<String>();
while (rs.next()) {
String myString = rs.getString("name_of_the_coulmn");
//do whatever logic with the string : check if it is null or empty ...
result.add(myString);
}
return result;
}
newresultsetextractor(){
@凌驾
公共列表提取数据(ResultSet rs)引发SQLException、DataAccessException{
列表结果=新建ArrayList();
while(rs.next()){
String myString=rs.getString(“coulmn的名称”);
//对字符串执行任何逻辑操作:检查它是否为null或空。。。
result.add(myString);
}
返回结果;
}
您遇到了什么错误?@DaveRanjan:没有错误。语句执行成功。但是列表包含空格而不是返回的字符串。4个空格而不是4个值。@Alex R:你们知道这个问题是一年前提出的,另一个是5个月前提出的。这个问题有更多的答案和更多的views然后是另一个…这仍然是标记为重复的,而不是另一个…@Iazarov:是的。有其他的解决方案。我只是想知道上面我做错了什么?为什么它不工作?哦,好的。对不起。你能试一下这是否会改变什么吗:new beanpropertyrowapper(String.class,true)
.Hmmm..听起来很合乎逻辑。
new ResultSetExtractor<List<String>>() {
@Override
public List<String> extractData(ResultSet rs) throws SQLException, DataAccessException {
List<String> result = new ArrayList<String>();
while (rs.next()) {
String myString = rs.getString("name_of_the_coulmn");
//do whatever logic with the string : check if it is null or empty ...
result.add(myString);
}
return result;
}