#java #javabeans #apache-commons-dbutils
#java #javabeans #apache-commons-dbutils
Вопрос:
На днях я узнал о DBUtils, поэтому подключился к проекту, чтобы протестировать его. Я создал класс с именем Tag, который выглядит следующим образом.
package io.sharpsoft.hooke.rest.models;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Tag implements Serializable {
/**
*
*/
private static final long serialVersionUID = -8040690224162074105L;
private int id;
private String name;
public Tag() {}
public Tag(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "ID: " this.getId() ", Name: " this.getName();
}
}
В моей базе данных есть таблица с именем TAGS, и все, что я хотел сделать, это создать функцию, которая извлекает все эти ТЕГИ. Это функция, которую я написал:
public static List<Tag> getAllTags() throws SQLException {
Connection conn = null;
QueryRunner runner = new QueryRunner();
try {
DbUtils.loadDriver(Constants.JDBC_DRIVER);
conn = DriverManager.getConnection(ConfUtils.getDbUrl(), ConfUtils.getDbUser(), ConfUtils.getDbPass());
ResultSetHandler<List<Tag>> resultHandler = new BeanListHandler<>(Tag.class);
List<Tag> tags = runner.query(conn, "select * from TAGS", resultHandler);
System.out.println("Tags");
for (Tag tag : tags) {
System.out.println("ID: " tag.getId() ", Name: " tag.getName());
}
return tags;
} finally {
DbUtils.close(conn);
}
}
Проблема в том, что BeanListHandler неправильно отображает записи результирующего набора в мой объект. Это то, что я получаю:
ID: 0, Name: null
ID: 0, Name: null
ID: 0, Name: null
ID: 0, Name: null
ID: 0, Name: null
ID: 0, Name: null
ID: 0, Name: null
ID: 0, Name: null
ID: 0, Name: null
Я был бы очень признателен за любую помощь! Спасибо!
Комментарии:
1. Я бы сказал, что у вас проблемы с заглавными буквами; каковы названия столбцов?
2. Я исправил проблему, переопределив сопоставление полей со столбцами.
3. На самом деле это не исправление. Это должно работать до тех пор, пока имена столбцов соответствуют вашим средствам получения и установки свойств.