【发布时间】:2014-08-25 03:49:44
【问题描述】:
我有一个这样的mysql表:
CREATE TABLE `sezione_menu` (
`id_sezione_menu` int(11) unsigned NOT NULL AUTO_INCREMENT,
`nome` varchar(256) NOT NULL DEFAULT '',
`ordine` int(11) DEFAULT NULL,
PRIMARY KEY (`id_sezione_menu`)
)ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
我使用 apache dbutils 来查询我的数据库,使用这些方法:
public static List<SezioneMenu> getSezioniMenu() {
String sql = "SELECT * FROM sezione_menu";
try {
QueryRunner qr = new QueryRunner(createDataSource());
ResultSetHandler rsh = new BeanListHandler(SezioneMenu.class);
List<SezioneMenu> sezioni = (List<SezioneMenu>)qr.query(sql, rsh);
return sezioni;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
private static DataSource createDataSource() {
BasicDataSource d = new BasicDataSource();
d.setDriverClassName(DRIVER);
d.setUsername(USERNAME);
d.setPassword(PASSWORD);
d.setUrl(DB_URL);
return d;
}
现在,如果我运行我的应用程序,它不会抛出异常,但是我的 java bean SezioneMenu 的某些字段(不是全部!)是空的(整数字段等于零,字符串字段等于空字符串)。
这也发生在其他表和 bean 上。
我过去在另一个系统配置中使用过这种方法,没有问题。
【问题讨论】:
-
在编写查询和 bean 时,是否确保 bean 中的字段与数据库列的名称相同,或者重命名列以匹配 bean 中的内容?您没有说哪些字段未填写,但我怀疑它可能是第一个字段,例如,您可能在 Java 代码中以驼峰式命名,同时在 SQL 语句中使用下划线。跨度>
-
您应该分享 SezioneMenu.class java 代码来检查您的字段名称是否正确?
标签: java mysql javabeans apache-commons-dbutils