Apache Ignite Cache с Postgresql - PullRequest
       23

Apache Ignite Cache с Postgresql

0 голосов
/ 29 июня 2018

ищу дни, чтобы разобраться в кеше с postgressql Вот класс POST

public class Post implements Serializable {
private static final long serialVersionUID = 0L;
private String id;
private String title;
private String description;
private LocalDate creationDate;
private String author;
// rest of the setter and getter are omitted
}

Вот код, который я вообще не мог понять

@Override
public Post load(String key) throws CacheLoaderException {
    Map<String, Object> inputParam = new HashMap<>();
    inputParam.put("id", key);
    return jdbcTemplate.queryForObject("SELECT * FROM POSTS WHERE id=?", inputParam, new RowMapper<Post>() {
        @Override
        //WHAT THE mapRow method does? Is there another way to do some thing?
        public Post mapRow(ResultSet rs, int i) throws SQLException {
            return new Post(rs.getString(1), rs.getString(2), rs.getString(3), rs.getDate(4), rs.getString(5));
        }
    });

}

Вот полный код: ссылка

Эти коды взяты из высокопроизводительных вычислений в памяти с книгой Apache Ignite. спасибо ...

1 Ответ

0 голосов
/ 29 июня 2018

Здесь вы пытаетесь обработать следующий запрос SQL:

"ВЫБРАТЬ * ИЗ ПОСТОВ, ГДЕ id =?"

Например, таблица "POSTS" имеет 5 записей. Каждая запись POST содержит 5 полей. Когда вы выполните эту команду SQL в базе данных, вы получите 5 строк. Каждая строка будет содержать эти 5 полей в некотором порядке (зависит от того, как была создана таблица).

В вашем примере вы собираетесь использовать метод jdbcTemplate.queryForObject. Требуется реализовать объект RowMapper, который будет обрабатывать строки из «SELECT * FROM POSTS WHERE id =?».

Вы можете прочитать об этом здесь:

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/RowMapper.html#mapRow-java.sql.ResultSet-int-

Как это работает:

Например, "ВЫБРАТЬ * ИЗ ПОСТОВ, ГДЕ id =?" должен вернуть 1 или более строк для некоторого идентификатора. Каждая строка будет представлена ​​как объект ResultSet (вы можете посмотреть на него как на строку с 5 полями). Каждый ResultSet (строка) должен быть преобразован в объект POST, прежде чем он будет возвращен пользователю.

public Post mapRow(ResultSet rs, int i) throws SQLException {
    return new Post(rs.getString(1), rs.getString(2), rs.getString(3), rs.getDate(4), rs.getString(5));
}

Этот код просто говорит, что вы получаете строку с 5 полями (строка, строка, строка, дата, строка) и строите объект POST, используя эти 5 полей.

...