java - Apache Ignite 缓存与 Postgresql

标签 java apache caching jcache

我正在寻找几天时间来了解 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));
        }
    });

}

这是完整的代码:link

这些代码取自高性能内存计算 与 Apache Ignite 书一起。 谢谢...

最佳答案

这里您尝试处理下一个 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-

工作原理:

例如“SELECT * FROM POSTS WHERE id=?”应该为某个 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 个字段(字符串、字符串、字符串、日期、字符串)的行,并使用这 5 个字段构建 POST 对象。

关于java - Apache Ignite 缓存与 Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51096429/

相关文章:

java - 什么是java中的多态方法?

linux - 屏蔽 IP 无效

android - 从缓存的视频 ExoPlayer 中获取 uri

python - Memcached 不允许缓存大于 1mb 限制的项目,即使它被覆盖

php - 确定用于评估预处理的 PHP.INI 值的运行时源?

javascript - 将 JS 放在文档头部是否有正当理由?

java - 进度对话框未显示在 AsyncTask 中

java - 如何让@Repository工作?

Java 日期时间转换

linux - 如何在 Centos 7 上设置网站目录(自定义主机)