Java 获取列表<;字符串>;使用SpringJDBCTemplate

Java 获取列表<;字符串>;使用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

我想使用Spring
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;
        }