当前位置: 首页 > article >正文

java:缓存 json格式

以下是修改后的代码:
import org.apache.ibatis.session.SqlSession;
import org.springframework.data.redis.core.RedisTemplate;
import com.alibaba.fastjson.JSON;
import java.util.List;
import java.util.stream.Collectors;
import java.util.logging.Logger;

public class OfferingCacheWithMyBatisAndRedisTemplate {
    private static final Logger logger = Logger.getLogger(OfferingCacheWithMyBatisAndRedisTemplate.class.getName());
    private static final String REDIS_KEY = "Cache_key";
    public static void main(String[] args) {
        try (SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession()) {
            // 使用 MyBatis 查询数据库数据并获取列表
            List<OfferingEntity> offeringList = sqlSession.selectList("mapper.OfferingMapper.selectOfferings");
            RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
            // 假设你已经正确配置了连接工厂
            redisTemplate.setConnectionFactory(redisConnectionFactory);
            offeringList.stream()
                  .forEach(offering -> {
                        String name = offering.getName();
                        boolean hasField = redisTemplate.opsForHash().hasKey(REDIS_KEY, name);
                        String cachedValue = hasField? (String) redisTemplate.opsForHash().get(REDIS_KEY, name) : null;
                        String jsonEntity = JSON.toJSONString(offering);
                        if (!hasField || (cachedValue!= null &&!cachedValue.equals(jsonEntity))) {
                            // 如果数据不同或者未缓存,更新缓存并记录日志
                            redisTemplate.opsForHash().put(REDIS_KEY, name, jsonEntity);
                            logger.info("Updated cache. Name: " + name);
                        }
                    });
            sqlSession.commit();
        } catch (Exception e) {
            logger.severe("Error in cache update: " + e.getMessage());
        }
    }
    // 假设的数据库实体类
    static class OfferingEntity {
        private String name;
        private String code;
        private String id;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getCode() {
            return code;
        }
        public void setCode(String code) {
            this.code = code;
        }
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
    }
}
在这段代码中,将实体类转换为 JSON 格式字符串进行存储。当需要获取数据时,可以从缓存中取出 JSON 字符串,再转换回实体类对象进行使用。这样可以方便地存储和组装数据。


http://www.kler.cn/news/335422.html

相关文章:

  • 阿里云域名注册购买和备案
  • 工厂模式与建造者模式的区别
  • 二、Python(项目创建、常见的设置、print函数)
  • SQL Inject-基于报错的信息获取
  • JavaScript中的高阶函数
  • C语言—单链表
  • 什么是reactor以及其三种版本
  • STM32定时器(TIM)
  • jQuery 选择器
  • C++的STL标准模版库容器--list类
  • Linux相关概念和重要知识点(11)(进程调度、Linux内核链表)
  • Hive优化操作(二)
  • 数据结构与算法篇(图)(持续更新迭代)
  • Vue入门-指令学习-v-on
  • 【工具类:FastJsonRedisSerializer】
  • 新技术浪潮下的等保测评:云计算、物联网与大数据的挑战与机遇
  • 【CKA】十四、监控pod的日志
  • 【git】通过配置 `init.defaultBranch`,自定义 Git 初始化时的默认分支名称,避免使用 `master` 并消除相关的警告提示
  • Python水循环标准化对比算法实现
  • rabbitMq-----路由匹配模块