在使用使用Apache Commons DbUtils 中的QueryRunner的时候,出现了查询某些字段为null的情况,以下是我解决整个问题的方法。
首先先把其他问题排除,例如数据类型是否对应,查询语句是否对应、数据库中的字段和实体类是否对应、有没有缺胳膊少腿啥的。
这是查询的方法
如果使用QueryRunner,出现为null的情况,有以下几种解决方法
1、使用Apache Commons DbUtils库中的BasicRowProcessor类和GenerousBeanProcessor类。
BasicRowProcessor basicRowProcessor = new BasicRowProcessor(new GenerousBeanProcessor());
如下图所示:
可以显示!!!
BasicRowProcessor类是一个简单的实现了RowProcessor接口的类,它用于将数据库查询结果的每一行转换为Java对象。它对于标准情况下的行处理非常有用。
GenerousBeanProcessor类是一个实现了BeanProcessor接口的实用程序类。它通过利用Java反射机制,将查询结果的列和Java对象的属性进行匹配,并将结果设置为属性的值。
在给定的代码中,BasicRowProcessor使用GenerousBeanProcessor来处理查询结果的行。GenerousBeanProcessor将根据列名和Java对象的属性名进行匹配,并将结果设置为相应属性的值。这使得数据库查询结果可以直接映射到Java对象中,减少了手动处理的工作量。
第二种方法:
如果上面的方法无法解决查询为null的情况(排除未查询成功的情况),可以尝试修改实体类中的属性名和数据库中的字段名完全相同!!!
上述的startTime能够显示,所以我没改,publish_time因为还是null所以我把它和数据库改为相同的,然后能够显示