zoukankan      html  css  js  c++  java
  • org.springframework.dao.EmptyResultDataAccessException

    public Wcrash getWcrashInfo(int id) {
            String sql = "select plateform_id,android_version,app_version_code,app_version_name,device_id,"
                    + "model,brand,product,stack_trace,crash_date,package_name from wcrash where id = ? ";
            return this.jdbcTemplate.queryForObject(
                    sql, 
                    new Object[]{id},
                    new RowMapper<Wcrash>(){
                        @Override
                        public Wcrash mapRow(ResultSet rs, int i) throws SQLException {
                            Wcrash wcrash = new Wcrash();
                            wcrash.setPlateformId(toNullStr(rs.getString("plateform_id")));
                            wcrash.setAndroidVersion(toNullStr(rs.getString("android_version")));
                            wcrash.setAppVersionCode(toNullStr(rs.getString("app_version_code")));
                            wcrash.setAppVersionName(toNullStr(rs.getString("app_version_name")));
                            wcrash.setDeviceId(toNullStr(rs.getString("device_id")));
                            wcrash.setModel(toNullStr(rs.getString("model")));
                            wcrash.setBrand(toNullStr(rs.getString("brand")));
                            wcrash.setProduct(toNullStr(rs.getString("product")));
                            wcrash.setStackTrace(toNullStr(rs.getString("stack_trace")));
                            wcrash.setCrashDate(toNullStr(rs.getString("crash_date")));
                            wcrash.setPackageName(toNullStr(rs.getString("package_name")));
                            return wcrash;
                        } 
                    });
        }

    异常信息:

    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:729)

    queryForObject无记录时会抛出异常,而对于query()list的类型不会抛出此异常。解决方法就是捕获这个异常然后在catch中返回null就可以。修改代码如下:

    public Wcrash getWcrashInfo(int id) {
            String sql = "select plateform_id,android_version,app_version_code,app_version_name,device_id,"
                    + "model,brand,product,stack_trace,crash_date,package_name from wcrash where id = ? ";
            try{
                return this.jdbcTemplate.queryForObject(
                    sql, 
                    new Object[]{id},
                    new RowMapper<Wcrash>(){
                        @Override
                        public Wcrash mapRow(ResultSet rs, int i) throws SQLException {
                            Wcrash wcrash = new Wcrash();
                            wcrash.setPlateformId(toNullStr(rs.getString("plateform_id")));
                            wcrash.setAndroidVersion(toNullStr(rs.getString("android_version")));
                            wcrash.setAppVersionCode(toNullStr(rs.getString("app_version_code")));
                            wcrash.setAppVersionName(toNullStr(rs.getString("app_version_name")));
                            wcrash.setDeviceId(toNullStr(rs.getString("device_id")));
                            wcrash.setModel(toNullStr(rs.getString("model")));
                            wcrash.setBrand(toNullStr(rs.getString("brand")));
                            wcrash.setProduct(toNullStr(rs.getString("product")));
                            wcrash.setStackTrace(toNullStr(rs.getString("stack_trace")));
                            wcrash.setCrashDate(toNullStr(rs.getString("crash_date")));
                            wcrash.setPackageName(toNullStr(rs.getString("package_name")));
                            return wcrash;
                        } 
                    });
            }catch(EmptyResultDataAccessException e){
                return null;
            }
        }
  • 相关阅读:
    3 * 0.1 == 0.3 将会返回什么?true 还是 false?
    Java中存储金额用什么数据类型?
    oracle数据库中索引失效的几种情况
    MyBatis如何防止SQL注入
    Windows10连接到内网(局域网)段
    Linux上安装Tomcat并启动时报Cannot find /usr/local/tomcat/tomcat_8080/bin/setclasspath.sh
    Linux上安装Mysql
    Linux上安装JDK
    FileZilla的使用和注意事项
    Failure to find parent:pom:2.2.6 in http://maven.aliyun was cached in the local repository...
  • 原文地址:https://www.cnblogs.com/yshyee/p/3611746.html
Copyright © 2011-2022 走看看