YouXu

业精于勤荒于嬉,行成于思毁于随。YouXu,加油!!!

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
    at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:732)
    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:747)

解决办法就是捕捉这个异常然后返回当没有这条数据需用它替换的值即可。一般设置为null,这个无数据的返回值依需求而定。

String sql = "select tt from aa where bb=? and cc=?";
        Object[] params = { bb, cc};
        Double value = 0.0;
        try {
            value = this.getJdbcTemplate().queryForObject(sql, params,
                    Double.class);
        } catch (EmptyResultDataAccessException e) {
            value = 1.0;
        }

queryForMap,queryForLong,queryForInt…都可以依照此方法。

另一种方法是将查询出的0行,或者null的数据,转换成0,这种方法可以比较以下3条sql语句。

SELECT xxx FROM bendi where region_code=0 and ddate='201502';
SELECT sum(xxx) FROM bendi where region_code=0 and ddate='201502';
SELECT IFNULL(sum(xxx),0) FROM bendi where region_code=0 and ddate='201502';
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Super_Man_X/article/details/49924185
文章标签: JdbcTempla JDBC
个人分类: MySql Exception
上一篇1153 - Got a packet bigger than 'max_allowed_packet' bytes With statement
下一篇Java对日期Date类进行加减运算,年份加减,月份加减,时间差等等
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭