当前位置:   article > 正文

SpringBoot+redis+mybatis实现缓存增删改_redis springboot 分页查询

redis springboot 分页查询

一:准备工作

1.导入依赖

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>3.0.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.commons</groupId>
  8. <artifactId>commons-pool2</artifactId>
  9. <version>2.6.0</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-data-redis</artifactId>
  14. </dependency>

2.配置yaml文件

  1. spring:
  2. datasource:
  3. url: jdbc:mysql://localhost:3306/mylove?serverTimezone=GMT-8
  4. driver-class-name: com.mysql.cj.jdbc.Driver
  5. username: root
  6. password: root
  7. redis:
  8. database: 0
  9. host: 127.0.0.1
  10. port: 6379
  11. jedis:
  12. pool:
  13. max-wait: 1000ms
  14. max-active: 8
  15. min-idle: 5
  16. max-idle: 8
  17. mybatis-plus:
  18. configuration:
  19. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

二.工具类redis操作类

1.jedis链接类

  1. @Configuration
  2. //链接redis 获取appliaction.yml 里的数据以spring.redis开头的方式
  3. @ConfigurationProperties(prefix = "spring.redis")
  4. public class JedisUtil {
  5. //属性名字和配置文件中必须一致,还要提供get和set方法
  6. private String host; //读取到spring.redis.hostg.redis.port
  7. private int port;//sprin
  8. @Bean
  9. public JedisPool jedisPool(){
  10. JedisPool jedisPool = new JedisPool(host,port);
  11. System.out.println("已连接:"+host+"上的redis,端口号为:"+port);
  12. return jedisPool;
  13. }
  14. public String getHost() {
  15. return host;
  16. }
  17. public void setHost(String host) {
  18. this.host = host;
  19. }
  20. public int getPort() {
  21. return port;
  22. }
  23. public void setPort(int port) {
  24. this.port = port;
  25. }
  26. }

2.json转化工具类

  1. @Component
  2. public class JsonUtils {
  3. // 定义jackson对象
  4. private static final ObjectMapper MAPPER = new ObjectMapper();
  5. /**
  6. * 将对象转换成json字符串。
  7. * <p>Title: pojoToJson</p>
  8. * <p>Description: </p>
  9. * @param data
  10. * @return
  11. */
  12. public static String objectToJson(Object data) {
  13. try {
  14. String string = MAPPER.writeValueAsString(data);
  15. return string;
  16. } catch (JsonProcessingException e) {
  17. e.printStackTrace();
  18. }
  19. return null;
  20. }
  21. /**
  22. * 将json结果集转化为对象
  23. *
  24. * @param jsonData json数据
  25. * @param class 对象中的object类型
  26. * @return
  27. */
  28. public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
  29. try {
  30. T t = MAPPER.readValue(jsonData, beanType);
  31. return t;
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. }
  35. return null;
  36. }
  37. /**
  38. * 将json数据转换成pojo对象list
  39. * <p>Title: jsonToList</p>
  40. * <p>Description: </p>
  41. * @param jsonData
  42. * @param beanType
  43. * @return
  44. */
  45. public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
  46. JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
  47. try {
  48. List<T> list = MAPPER.readValue(jsonData, javaType);
  49. return list;
  50. } catch (Exception e) {
  51. e.printStackTrace();
  52. }
  53. return null;
  54. }
  55. }

3.redis操作类

  1. @Service
  2. public class RedisServiceImpl implements redisDao {
  3. @Autowired
  4. private JedisPool jedisPool;
  5. /**
  6. * 查询key的value值
  7. * @param key
  8. * @return
  9. */
  10. @Override
  11. public String getValue(String key) {
  12. //连接redis
  13. Jedis jedis = jedisPool.getResource();
  14. //操作redis
  15. String s = jedis.get(key);
  16. //关闭连接
  17. jedis.close();
  18. return s;
  19. }
  20. /**
  21. * 删除redis里的key-value值
  22. *
  23. * @param key String
  24. * @return long
  25. */
  26. @Override
  27. public Long delValue(String key) {
  28. //连接redis
  29. Jedis jedis = jedisPool.getResource();
  30. //操作redis
  31. Long del = jedis.del(key);
  32. //关闭连接
  33. jedis.close();
  34. return del;
  35. }
  36. @Override
  37. public String setValue(String key, String val) {
  38. //连接redis
  39. Jedis jedis = jedisPool.getResource();
  40. //操作redis
  41. String s = jedis.set(key, val);
  42. //关闭连接
  43. jedis.close();
  44. return s;
  45. }
  46. @Override
  47. public Long expire(String key, int seconds) {
  48. //连接redis
  49. Jedis jedis = jedisPool.getResource();
  50. //操作redis
  51. Long aLong = jedis.expire(key, seconds);
  52. //关闭连接
  53. jedis.close();
  54. return aLong;
  55. }
  56. }

三:编写service层代码

  1. @Service
  2. public class goodsServiceImpl extends ServiceImpl<GoodsMapper,goods> implements goodsService {
  3. @Autowired
  4. RedisServiceImpl redisServiceImpl;
  5. @Autowired
  6. GoodsMapper goodsMapper;
  7. @Autowired
  8. com.yq.mapper.typeMapper typeMapper;
  9. int i=0;
  10. /**
  11. * 查询出所有信息,并将数据缓存到redis中
  12. * @return goods类型所有数据
  13. */
  14. @Override
  15. public List<goods> findListGood() {
  16. String list = redisServiceImpl.getValue("goodList");
  17. if (list == null) {
  18. List<com.yq.entry.goods> goods = goodsMapper.selectList(null);
  19. redisServiceImpl.setValue("goodList", JsonUtils.objectToJson(goods));
  20. return goods;
  21. }
  22. return JsonUtils.jsonToList(list, goods.class);
  23. }
  24. /**
  25. * goods并缓存数据
  26. *
  27. * @param
  28. * @return int
  29. */
  30. @Override
  31. public int addGoods(goods io) {
  32. String name = io.getName();
  33. String value = redisServiceImpl.getValue(name);
  34. if (value == null) {
  35. redisServiceImpl.setValue(name, JsonUtils.objectToJson(io));//向redis里添加新增数据
  36. }
  37. return 1;
  38. }
  39. /**
  40. * 类型信息,缓存到redis中
  41. * @return list<type>
  42. */
  43. @Override
  44. public List<types> getType() {
  45. String list = redisServiceImpl.getValue("typeList");
  46. if (list == null) {
  47. List<types> types = typeMapper.selectList(null);
  48. redisServiceImpl.setValue("typeList", JsonUtils.objectToJson(types));
  49. return types;
  50. }
  51. return JsonUtils.jsonToList(list, types.class);
  52. }
  53. /**
  54. * 更新信息
  55. * @param good 物品信息
  56. * @return int
  57. */
  58. @Override
  59. public int updateGoods(goods good) {
  60. redisServiceImpl.delValue("typeList");
  61. redisServiceImpl.delValue("goodList");
  62. return goodsMapper.updateById(good);
  63. }
  64. /**
  65. * 根据id查询物品信息
  66. * @param id 物品id
  67. * @return 物品对象
  68. */
  69. @Override
  70. public goods findByIdGoods(int id) {
  71. QueryWrapper<com.yq.entry.goods> qw = new QueryWrapper();
  72. qw.eq("id", id);
  73. return goodsMapper.selectOne(qw);
  74. }
  75. /**
  76. * 删除信息并备份信息
  77. * @param id 物品id
  78. * @return int
  79. */
  80. @Override
  81. public int delGoods(int id) {
  82. goods goods = goodsMapper.selectById(id);
  83. QueryWrapper<goods> ww = new QueryWrapper<>();
  84. ww.eq("id", id);
  85. int i = goodsMapper.delete(ww);
  86. if (i >= 1) {
  87. redisServiceImpl.delValue("goodList");
  88. //如果删除成功,则把信息存放到redis中
  89. redisServiceImpl.setValue("delGoods",JsonUtils.objectToJson(goods));
  90. //查看是否还有相同类型的物品
  91. QueryWrapper<goods> qw = new QueryWrapper<>();
  92. qw.eq("type", goods.getType());
  93. List<goods> list = goodsMapper.selectList(qw);
  94. //如果没有,则删除类型表里的该这段
  95. if (list == null) {
  96. QueryWrapper<types> qw1 = new QueryWrapper<>();
  97. qw1.eq("id", goods.getType());
  98. int i1 = typeMapper.delete(qw1);
  99. return 2;
  100. } else {
  101. return 1;
  102. }
  103. }
  104. return 0;
  105. }
  106. /**
  107. * 还原上次删除操作
  108. * @return
  109. */
  110. @Override
  111. public int withdrawByGoods() {
  112. String goods = redisServiceImpl.getValue("delGoods");
  113. if (goods!=null){
  114. goods o = JsonUtils.jsonToPojo(goods, goods.class);
  115. redisServiceImpl.delValue("goodList");
  116. int i = goodsMapper.insert(o);
  117. redisServiceImpl.delValue("delGoods");
  118. }
  119. return 0;
  120. }
  121. @Override
  122. public int addRedis(goods goods) {
  123. redisServiceImpl.setValue(i+"",JsonUtils.objectToJson(goods));
  124. System.out.println(i+" <================");
  125. return i++;
  126. }
  127. @Override
  128. public int addAllRedis() {
  129. String value = redisServiceImpl.getValue(i + "");
  130. System.out.println(value+"<===============");
  131. for (int j = 0; j <3 ; j++) {
  132. goods goods1 = JsonUtils.jsonToPojo( redisServiceImpl.getValue(j + ""), goods.class);
  133. goodsMapper.insert(goods1);
  134. redisServiceImpl.delValue(j+"");
  135. }
  136. redisServiceImpl.delValue("goodList");
  137. return 1;
  138. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/451716
推荐阅读
相关标签
  

闽ICP备14008679号