From b29c13a87c856b4c7d38fda2423d3ca280273ccd Mon Sep 17 00:00:00 2001
From: LuWenhui <1265400024@qq.com>
Date: Fri, 28 Oct 2016 23:56:22 +0800
Subject: [PATCH] =?UTF-8?q?=EF=BC=88=E4=BA=94=EF=BC=89=E6=95=B4=E5=90=88Re?=
=?UTF-8?q?dis?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 11 ++
.../core/controller/BaseRedisController.java | 50 ++++++++
.../core/dao/impl/RedisBaseDaoImpl.java | 107 ++++++++++++++++++
.../com/training/core/redis/RedisConfig.java | 50 ++++++++
.../core/redis/RedisObjectSerializer.java | 43 +++++++
.../service/impl/RedisBaseServiceImpl.java | 46 ++++++++
.../redis/controller/DemoRedisController.java | 19 ++++
.../com/training/redis/entity/DemoRedis.java | 9 ++
.../redis/service/DemoRedisService.java | 8 ++
.../service/impl/DemoRedisServiceImpl.java | 14 +++
src/main/resources/application.yml | 12 +-
11 files changed, 367 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/com/training/core/controller/BaseRedisController.java
create mode 100644 src/main/java/com/training/core/dao/impl/RedisBaseDaoImpl.java
create mode 100644 src/main/java/com/training/core/redis/RedisConfig.java
create mode 100644 src/main/java/com/training/core/redis/RedisObjectSerializer.java
create mode 100644 src/main/java/com/training/core/service/impl/RedisBaseServiceImpl.java
create mode 100644 src/main/java/com/training/redis/controller/DemoRedisController.java
create mode 100644 src/main/java/com/training/redis/entity/DemoRedis.java
create mode 100644 src/main/java/com/training/redis/service/DemoRedisService.java
create mode 100644 src/main/java/com/training/redis/service/impl/DemoRedisServiceImpl.java
diff --git a/pom.xml b/pom.xml
index 04e9cd6..c576c36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -153,6 +153,17 @@
${spring-security.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-redis
+
+
+
+ org.springframework.boot
+ spring-boot-starter-cache
+
+
io.springfox
diff --git a/src/main/java/com/training/core/controller/BaseRedisController.java b/src/main/java/com/training/core/controller/BaseRedisController.java
new file mode 100644
index 0000000..f35dc89
--- /dev/null
+++ b/src/main/java/com/training/core/controller/BaseRedisController.java
@@ -0,0 +1,50 @@
+package com.training.core.controller;
+
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+
+import javax.annotation.Resource;
+
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.training.core.dao.impl.RedisBaseDaoImpl;
+import com.training.core.dto.ResultDataDto;
+import com.training.core.entity.BaseEntity;
+import com.training.core.util.GenericeClassUtils;
+
+public class BaseRedisController extends BaseController {
+
+ @SuppressWarnings("unchecked")
+ protected Class entityClass = (Class) GenericeClassUtils.getSuperClassGenricType(this.getClass(), 0);
+
+ @Resource(name = "redisBaseDao")
+ protected RedisBaseDaoImpl baseDao;
+
+ /**
+ * 根据Id查询实体
+ */
+ @ApiOperation(value="根据Id查询实体", notes="getEntityById")
+ @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Integer")
+ @RequestMapping(value = "/getEntityById/{id}", method = RequestMethod.GET)
+ public @ResponseBody ResultDataDto getEntityById(@PathVariable(value = "id") final Integer id) {
+ T entity = baseDao.getEntityById(entityClass, id);
+ return new ResultDataDto(entity);
+ }
+
+ /**
+ * 新增实体
+ */
+ @ApiOperation(value="新增实体", notes="addEntity")
+ @ApiImplicitParam(name = "entity", value = "实体Json", required = true, dataType = "application/json")
+ @RequestMapping(value = "/addEntity", method = RequestMethod.POST, consumes = "application/json")
+ public @ResponseBody ResultDataDto addEntity(@RequestBody final T entity) {
+ baseDao.addEntity(entity);
+ return ResultDataDto.addAddSuccess();
+ }
+
+
+}
diff --git a/src/main/java/com/training/core/dao/impl/RedisBaseDaoImpl.java b/src/main/java/com/training/core/dao/impl/RedisBaseDaoImpl.java
new file mode 100644
index 0000000..ec97dc6
--- /dev/null
+++ b/src/main/java/com/training/core/dao/impl/RedisBaseDaoImpl.java
@@ -0,0 +1,107 @@
+package com.training.core.dao.impl;
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+
+import com.google.gson.Gson;
+import com.training.core.dao.BaseDao;
+import com.training.core.dto.FlexiPageDto;
+import com.training.core.entity.BaseEntity;
+
+import org.springframework.stereotype.Repository;
+
+import tk.mybatis.mapper.entity.Example;
+
+@Repository("redisBaseDao")
+public class RedisBaseDaoImpl implements BaseDao {
+
+ @Autowired
+ protected RedisTemplate redisTemplate;
+
+ @Override
+ public T getEntityById(final Class cls, final Integer id) {
+ return redisTemplate.execute(new RedisCallback() {
+ @Override
+ public T doInRedis(RedisConnection connection) throws DataAccessException {
+ byte[] key = redisTemplate.getStringSerializer().serialize(cls.getName() + "_" + id);
+ if (connection.exists(key)) {
+ byte[] value = connection.get(key);
+ String json = redisTemplate.getStringSerializer().deserialize(value);
+ return new Gson().fromJson(json, cls);
+ }
+ return null;
+ }
+ });
+ }
+
+ public void addEntity(final T entity) {
+ redisTemplate.execute(new RedisCallback