用spring getJdbcTemplate().queryForObject查询数据库里的一条记录是报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用spring getJdbcTemplate().queryForObject查询数据库里的一条记录是报错相关的知识,希望对你有一定的参考价值。

用spring this.getJdbcTemplate().queryForObject(sql, News.class),查询数据库里的一条数据,结果报错org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 4
查询非要用实现这个RowMapper接口的类进行封装吗?
我用的注解没有用实现RowMapper的封装类,我做了两个功能一个是列表显示,一个是输入id号查询,那个列表显示能够实现,查询实现不了我的代码如下
public List<News> showNews()
String sql="select * from t_news order by createTime ";
return this.getJdbcTemplateWithPagination().queryForList(sql);


public News getNews(int newsId)
String sql="select * from t_news where newsId=" + newsId;
return (News) this.getJdbcTemplate().queryForObject(sql, News.class);


JdbcTemplate有没有其他的方法可以查询一条记录并返回的!

参考技术A 建议你仔细看一下News类中的字段和数据库中news表是否对应上了,注解也是很容易出错的 参考技术B 如果你的列表是正确的,那么你的按id查询也是正确的。所以错误我觉得不在你的方法。根据错误提示是说期望的列是1,实际上是4.本回答被提问者采纳

getJdbcTemplate().queryForList(sql)返回的list里面是空值,但是我在PL/SQL里面执行SQL的时候是有数据的

getJdbcTemplate().queryForList(sql),你这sql语句也要传值吧!看下值是否传对了,是否传进去了。你自己测试sql语句的时候传入的值是写死的。
如果没有入参数,那问题只有一个,那就是getJdbcTemplate()得到的这个模板有问题,你看其他用同一个模板的查询语句能用不?
参考技术A 先把sql输出一下看是不是正确的追问

我说了 在PL/SQL里面执行那个sql的时候是对的,查的数据也符合条件

追答

你自己觉得可能吗?
在外部执行没有问题,放到里面就有问题了.
这些问题一般都是一些细节没有注意.你再仔细检查检查.

本回答被提问者采纳

以上是关于用spring getJdbcTemplate().queryForObject查询数据库里的一条记录是报错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring 中对两个查询使用相同的连接?

getJdbcTemplate().batchUpdate的性能优化

SpringMVC GetJdbcTemplate() 从查询中获取值

Spring之DAO二

Spring之jdbc继承JdbcDaoSupport

getJdbcTemplate().queryForList(sql)返回的list里面是空值,但是我在PL/SQL里面执行SQL的时候是有数据的