关于QueryRunner获取值为null

122 阅读2分钟

QueryRunner使用时获取数值为null

今天在使用QueryRunner使用时部分数据获取始终为null,在经过各种方法(chat,csdn,同学讨论)后,始终没有找到问题所在,下面是问题代码

public Account selectByActno(Connection conn,String actno) {
    //数据库查询语句通过actno查询t_act表中所有数据
    String sql = "select * from t_act where actno = ?";
    //账户实体类
    Account account = null;
    try {
        //通过DBUtil工具类使用query()方法返回一个账户实体(account)
        account = DButil.query(conn,sql, new BeanHandler<>(Account.class),actno);
        //为了方便观察,控制台打印输出
        System.out.println(account);
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
    return account;
}

这是数据库中表单数据

image.png

下图中控制台输出balance始终为null,而id,actno正常获取

image.png 网上普遍给出的问题就是两种

一种是没有在实体类中定义/正确定义setter方法

setXxx(),定义set方法时应该与数据库中的字段对应。

第二种是说可能是数据库中字段名与实体类的类型不匹配,也有人数据库中字段名在建表的时候不小心打进去一个空格之类的小错误。

如果说自己的数据库连接,以及各种逻辑代码都没有问题的话,基本上就是这样的问题。而我今天在代码中检查很多遍,甚至将数据库表删了重新写一遍,实体类也删了重写,但是依然是这样的结果。后来在同学的一句话后我一梦惊醒,“有没有可能是关键字”,然后发现balance是数据库的一个关键字,使用起来会导致SQL语句出现一些问题。最后将数据库表修改之后就可以成功运行了。

image.png

image.png

第一次发布文章,记录一下自己在平时学习和使用到的有关java的问题。有错误或者不对的地方请大佬指正。