SpringBoot redis第二篇——使用Redis Repository操作数据hash

本系列前面的文章
使用redisTemplate操作数据

将对象一次性hash入库的方法

方法一:使用Jackson2HashMapper

    @Resource(name="redisTemplate")
    private HashOperations<String, String, Object> jacksonHashOperations;
    private HashMapper<Object, String, Object> jackson2HashMapper = new Jackson2HashMapper(false);
    @Test
    public void testHashPutAll(){

        PictureVO p = new PictureVO(Long.valueOf(17),"byrant","a");
        //将对象以hash的形式放入数据库
        Map<String,Object> mappedHash = jackson2HashMapper.toHash(p);
        jacksonHashOperations.putAll("picture" + p.getId(), mappedHash);

        //将对象从数据库取出来
        Map<String,Object> loadedHash = jacksonHashOperations.entries("picture" + p.getId());
        Object map = jackson2HashMapper.fromHash(loadedHash);
        PictureVO getback = new ObjectMapper().convertValue(map,PictureVO.class);
        Assert.assertEquals(p.getAuthor(),getback.getAuthor());
    }

在这里插入图片描述
方法二:使用redis repository

1.在要序列化的类上加上注解@RedisHash(“xxx”)

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@RedisHash("pictures")
public class PictureVO implements Serializable {
    private static final long serialVersionUID = -8985545025228238754L;
    @Id
    private Long id;
    private String author;
    private String type;
}

2.继承CrudRepository接口,获取基本的CRUD操作

ackage com.example.mytoken.dao;

import com.example.mytoken.model.PictureVO;
import org.springframework.data.repository.CrudRepository;

public interface PictureRepository2 extends CrudRepository<PictureVO, Long> {
    // 继承CrudRepository,获取基本的CRUD操作
}

3.在项目入口方法上加上注解@EnableRedisRepositories

@SpringBootApplication
@EnableRedisRepositories
public class MytokenApplication {

    public static void main(String[] args) {
        SpringApplication.run(MytokenApplication.class, args);
    }

}

4.测试

package com.example.mytoken;

import com.example.mytoken.dao.PictureRepository2;
import com.example.mytoken.jpa.Picture;
import com.example.mytoken.jpa.PictureRepository;
import com.example.mytoken.model.PictureVO;
import javafx.application.Application;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Optional;

@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisRepositoryTest {

    @Autowired
    PictureRepository2 pictureRepository2;

    @Test
    public void test(){

        PictureVO rand = new PictureVO(Long.valueOf(19),"LJR","NB");
        pictureRepository2.save(rand);
        Optional<PictureVO> op = pictureRepository2.findById(rand.getId());
        PictureVO p2 = op.get();
        pictureRepository2.count();
        //pictureRepository2.delete(rand);

    }

    @Test
    public void testDelete(){
        pictureRepository2.deleteById(Long.valueOf(19));
    }
}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值