繁体   English   中英

使用Spring查询数据库中的列时出错

[英]Error while querying for a column in database using spring

我正在尝试查询整个列数据,例如:

SELECT USER_USERNAME FROM  xxxx WHERE USER_USERNAME=?

我出错了

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

我的刀

@Override
public String getAllUsers(UserRegistration uname) {
    System.out.println(uname.getUserName());

    return template.queryForObject(GET_USER_USERNAME, new Object[] { uname.getUserName() },
            new BeanPropertyRowMapper<String>(String.class));

}

我通过xml文件注入属性。

我的控制器

@RequestMapping(method = RequestMethod.POST,value = "/checkUserName", headers = "Accept=application/json")
public org.weber.nag.model.UserRegistration checkUserName(@RequestBody org.weber.nag.model.UserRegistration userReg) {
    userDao.getAllUsers(userReg);
    return userReg;
}

所以从上面开始,当我尝试从邮递员传递用户名时,它将值传递给控制器​​,然后从那里将其传递给我的dao,以比较该名称是否存在。该名称成功到达我的dao,但是我得到了错误。

所以我试图抓住异常

@Override
public String getAllUsers(UserRegistration uname) {
    System.out.println(uname.getUserName());
    try {
        return template.queryForObject(GET_USER_USERNAME, new Object[] { uname.getUserName() },
                new BeanPropertyRowMapper<String>(String.class));
    } catch (EmptyResultDataAccessException e) {
        System.out.println("uname already exists");
        return "user exists";
    }


}

但是每次打印

"uname already exists"

不管给定的用户名是否在db中。

在JdbcTemplate,queryForInt,queryForLong, queryForObject中,所有这些方法都希望执行的查询返回一行且仅返回一行 如果没有得到任何行,将导致EmptyResultDataAccessException。

来自EmptyResultDataAccessException的javadoc

当预期结果至少有一行(或元素)但实际上有零行(或元素)时,抛出数据访问异常。

确保您使用的查询应仅返回一行

如果根本不可能,请使用查询方法代替queryForObject。

提示:要对此进行调试,请直接在SQL IDE中运行相同的查询。

@Override
public String getAllUsers(UserRegistration uname) {
    try {
         template.queryForObject(GET_USER_USERNAME, new Object[] { uname.getUserName() },
                new BeanPropertyRowMapper<String>(String.class));
        System.out.println("uname  exists");
        return "user name is NOT available.";
    } catch (EmptyResultDataAccessException e) {
        System.out.println("uname do not exists");
    }

    return "user is available";

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM