Почему BeanListHandler не работает в моем классе?

#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. На самом деле это не исправление. Это должно работать до тех пор, пока имена столбцов соответствуют вашим средствам получения и установки свойств.