SSM整合redis

redis是一种非关系型数据库,与mongoDB不同的是redis是内存数据库,所以访问速度很快。常用作缓存和发布-订阅式的消息队列。

这里用的是ssm框架+maven构建的项目。开发工具是idea

首先是需要引入的pom.xml文件:

  1. <properties>
  2. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3. <maven.compiler.source>1.7</maven.compiler.source>
  4. <maven.compiler.target>1.7</maven.compiler.target>
  5. <!-- mybatis版本号 -->
  6. <mybatis.version>3.2.4</mybatis.version>
  7. <!-- log4j日志文件管理包版本 -->
  8. <slf4j.version>1.6.6</slf4j.version>
  9. <log4j.version>1.2.12</log4j.version>
  10. <spring.version>4.2.5.RELEASE</spring.version>
  11. </properties>
  12. <dependencies>
  13. <!-- 引入redis -->
  14. <!-- redis cache related.....start -->
  15. <dependency>
  16. <groupId>org.springframework.data</groupId>
  17. <artifactId>spring-data-redis</artifactId>
  18. <version>1.6.0.RELEASE</version>
  19. </dependency>
  20.  
  21. <dependency>
  22. <groupId>redis.clients</groupId>
  23. <artifactId>jedis</artifactId>
  24. <version>2.4.2</version>
  25. </dependency>
  26.  
  27. <!-- spring核心包 -->
  28. <!-- springframe start -->
  29. <dependency>
  30. <groupId>org.springframework</groupId>
  31. <artifactId>spring-core</artifactId>
  32. <version>${spring.version}</version>
  33. </dependency>
  34.  
  35. <dependency>
  36. <groupId>org.springframework</groupId>
  37. <artifactId>spring-web</artifactId>
  38. <version>${spring.version}</version>
  39. </dependency>
  40.  
  41. <dependency>
  42. <groupId>org.springframework</groupId>
  43. <artifactId>spring-oxm</artifactId>
  44. <version>${spring.version}</version>
  45. </dependency>
  46.  
  47. <dependency>
  48. <groupId>org.springframework</groupId>
  49. <artifactId>spring-tx</artifactId>
  50. <version>${spring.version}</version>
  51. </dependency>
  52. <dependency>
  53. <groupId>org.springframework</groupId>
  54. <artifactId>spring-jdbc</artifactId>
  55. <version>${spring.version}</version>
  56. </dependency>
  57.  
  58. <dependency>
  59. <groupId>org.springframework</groupId>
  60. <artifactId>spring-webmvc</artifactId>
  61. <version>${spring.version}</version>
  62. </dependency>
  63.  
  64. <dependency>
  65. <groupId>org.springframework</groupId>
  66. <artifactId>spring-aop</artifactId>
  67. <version>${spring.version}</version>
  68. </dependency>
  69.  
  70. <dependency>
  71. <groupId>org.springframework</groupId>
  72. <artifactId>spring-context-support</artifactId>
  73. <version>${spring.version}</version>
  74. </dependency>
  75.  
  76. <dependency>
  77. <groupId>org.springframework</groupId>
  78. <artifactId>spring-test</artifactId>
  79. <version>${spring.version}</version>
  80. </dependency>
  81. <!-- springframe end -->
  82.  
  83. <!-- mybatis核心包 -->
  84. <dependency>
  85. <groupId>org.mybatis</groupId>
  86. <artifactId>mybatis</artifactId>
  87. <version>${mybatis.version}</version>
  88. </dependency>
  89. <!-- mybatis/spring包 -->
  90. <dependency>
  91. <groupId>org.mybatis</groupId>
  92. <artifactId>mybatis-spring</artifactId>
  93. <version>1.2.2</version>
  94. </dependency>
  95. <!-- commons -->
  96. <dependency>
  97. <groupId>commons-lang</groupId>
  98. <artifactId>commons-lang</artifactId>
  99. <version>2.4</version>
  100. </dependency>
  101. <dependency>
  102. <groupId>commons-logging</groupId>
  103. <artifactId>commons-logging</artifactId>
  104. <version>1.1</version>
  105. </dependency>
  106. <dependency>
  107. <groupId>commons-pool</groupId>
  108. <artifactId>commons-pool</artifactId>
  109. <version>1.5.6</version>
  110. </dependency>
  111. <dependency>
  112. <groupId>commons-dbcp</groupId>
  113. <artifactId>commons-dbcp</artifactId>
  114. <version>1.4</version>
  115. </dependency>
  116. <dependency>
  117. <groupId>commons-beanutils</groupId>
  118. <artifactId>commons-beanutils</artifactId>
  119. <version>1.8.3</version>
  120. </dependency>
  121. <dependency>
  122. <groupId>commons-httpclient</groupId>
  123. <artifactId>commons-httpclient</artifactId>
  124. <version>3.1</version>
  125. </dependency>
  126. <dependency>
  127. <groupId>commons-collections</groupId>
  128. <artifactId>commons-collections</artifactId>
  129. <version>3.1</version>
  130. </dependency>
  131. <dependency>
  132. <groupId>commons-codec</groupId>
  133. <artifactId>commons-codec</artifactId>
  134. <version>1.9</version>
  135. </dependency>
  136. <dependency>
  137. <groupId>javax.annotation</groupId>
  138. <artifactId>jsr250-api</artifactId>
  139. <version>1.0</version>
  140. </dependency>
  141.  
  142. <dependency>
  143. <groupId>net.sf.ezmorph</groupId>
  144. <artifactId>ezmorph</artifactId>
  145. <version>1.0.6</version>
  146. </dependency>
  147. <dependency>
  148. <groupId>javax.activation</groupId>
  149. <artifactId>activation</artifactId>
  150. <version>1.1</version>
  151. </dependency>
  152. <dependency>
  153. <groupId>taglibs</groupId>
  154. <artifactId>standard</artifactId>
  155. <version>1.1.2</version>
  156. </dependency>
  157. <!-- 日志文件管理包 -->
  158. <!-- log start -->
  159. <dependency>
  160. <groupId>log4j</groupId>
  161. <artifactId>log4j</artifactId>
  162. <version>${log4j.version}</version>
  163. </dependency>
  164. <dependency>
  165. <groupId>org.slf4j</groupId>
  166. <artifactId>slf4j-api</artifactId>
  167. <version>${slf4j.version}</version>
  168. </dependency>
  169. <dependency>
  170. <groupId>org.slf4j</groupId>
  171. <artifactId>slf4j-log4j12</artifactId>
  172. <version>${slf4j.version}</version>
  173. </dependency>
  174. <dependency>
  175. <groupId>org.apache.logging.log4j</groupId>
  176. <artifactId>log4j-1.2-api</artifactId>
  177. <version>2.8.2</version>
  178. </dependency>
  179. <!-- log end -->
  180. <!--log4j -->
  181.  
  182. <!--mysql数据库-->
  183. <dependency>
  184. <groupId>mysql</groupId>
  185. <artifactId>mysql-connector-java</artifactId>
  186. <version>5.1.21</version>
  187. </dependency>
  188.  
  189. <!-- jstl -->
  190. <dependency>
  191. <groupId>javax.servlet</groupId>
  192. <artifactId>jstl</artifactId>
  193. <version>1.2</version>
  194. </dependency>
  195. <dependency>
  196. <groupId>javax.servlet.jsp</groupId>
  197. <artifactId>jsp-api</artifactId>
  198. <version>2.2.1-b03</version>
  199. <scope>provided</scope>
  200. </dependency>
  201.  
  202. <!-- servlet -->
  203. <dependency>
  204. <groupId>javax.servlet</groupId>
  205. <artifactId>servlet-api</artifactId>
  206. <version>2.5</version>
  207. <scope>provided</scope>
  208. </dependency>
  209. <!-- junit测试包 -->
  210. <dependency>
  211. <groupId>junit</groupId>
  212. <artifactId>junit</artifactId>
  213. <version>4.11</version>
  214. <scope>test</scope>
  215. </dependency>
  216. <!--jackJson-->
  217. <dependency>
  218. <groupId>com.fasterxml.jackson.core</groupId>
  219. <artifactId>jackson-core</artifactId>
  220. <version>2.1.0</version>
  221. </dependency>
  222. <dependency>
  223. <groupId>com.fasterxml.jackson.core</groupId>
  224. <artifactId>jackson-databind</artifactId>
  225. <version>2.1.0</version>
  226. </dependency>
  227. <dependency>
  228. <groupId>com.fasterxml.jackson.core</groupId>
  229. <artifactId>jackson-annotations</artifactId>
  230. <version>2.1.0</version>
  231. </dependency>
  232. <dependency>
  233. <groupId>org.apache.geronimo.bundles</groupId>
  234. <artifactId>aspectjweaver</artifactId>
  235. <version>1.6.8_2</version>
  236. </dependency>
  237. <dependency>
  238. <groupId>aspectj</groupId>
  239. <artifactId>aspectjweaver</artifactId>
  240. <version>1.5.4</version>
  241. </dependency>
  242. </dependencies>
  243. <build>
  244. <resources>
  245. <resource>
  246. <directory>src/main/java</directory>
  247. <includes>
  248. <include>**/*.properties</include>
  249. <include>**/*.xml</include>
  250. </includes>
  251. <filtering>false</filtering>
  252. </resource>
  253. </resources>
  254. </build>

我的项目结构如下:

然后引入各个配置文件:

1,数据库:

2.redis.properties

  1. # Redis settings
  2. redis.host=127.0.0.1
  3. redis.port=6379
  4. #redis.pass=password
  5. redis.dbIndex=0
  6. redis.expiration=3000
  7. redis.maxIdle=300
  8. redis.maxActive=600
  9. redis.maxWait=1000
  10. redis.testOnBorrow=true

3,spring的配置文件appcalitionContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:cache="http://www.springframework.org/schema/cache"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/mvc
  10. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  11. http://www.springframework.org/schema/context
  12. http://www.springframework.org/schema/context/spring-context.xsd
  13. http://www.springframework.org/schema/cache
  14. http://www.springframework.org/schema/cache/spring-cache.xsd">
  15.  
  16. <mvc:annotation-driven/>
  17. <context:component-scan base-package="com.springredis"/>
  18.  
  19. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  20. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  21. <property name="url" value="jdbc:mysql://localhost:3306/user?useSSL=true"/>
  22. <property name="username" value="root"/>
  23. <property name="password" value="1234"/>
  24. </bean>
  25. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  26. <!-- 数据源 -->
  27. <property name="dataSource" ref="dataSource"/>
  28. <property name="mapperLocations" value="classpath:sqlmap/*Mapper.xml"/>
  29. <property name="typeAliasesPackage" value="com.springredis.entity"/>
  30.  
  31. </bean>
  32. <!-- 在spring容器中配置mapper的扫描器产生的动态代理对象在spring的容器中自动注册,bean的id就是mapper类名(首字母小写)-->
  33. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  34. <!-- 指定扫描包的路径,就是mapper接口的路径,多个包中间以 半角逗号隔开 -->
  35. <property name="basePackage" value="com.springredis.dao"/>
  36. <!-- 配置sqlSessionFactoryBeanName -->
  37. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  38. </bean>
  39.  
  40. <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  41. <property name="dataSource" ref="dataSource"/>
  42. </bean>
  43.  
  44. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  45. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  46. <property name="prefix" value="/WEb-INF/"/>
  47. <property name="suffix" value=".jsp"/>
  48. </bean>
    </beans>

4,编写spring-redis.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:cache="http://www.springframework.org/schema/cache"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/cache
  8. http://www.springframework.org/schema/cache/spring-cache.xsd">
  9. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  10. <property name="locations">
  11. <list>
  12. <value>classpath:properties/redis.properties</value>
  13. </list>
  14. </property>
  15. </bean>
  16. <!--配置redis的参数-->
  17. <bean class="redis.clients.jedis.JedisPoolConfig" id="poolConfig">
  18. <property name="maxIdle" value="${redis.maxIdle}"/>
  19. <property name="maxTotal" value="${redis.maxActive}"/>
  20. <property name="maxWaitMillis" value="${redis.maxWait}"/>
  21. <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
  22. </bean>
  23. <!--配置redis的连接参数 如需要密码,请配置,database是redis的指定哪个库-->
  24. <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
  25. <property name="hostName" value="${redis.host}"/>
  26. <property name="port" value="${redis.port}"/>
  27. <!--<property name="password" value="${redis.password}"/>-->
  28. <property name="database" value="${redis.dbIndex}"/>
  29. <property name="poolConfig" ref="poolConfig"/>
  30. </bean>
  31.  
  32. <!--redis操作模版,使用该对象可以操作redis -->
  33. <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
  34. <property name="connectionFactory" ref="jedisConnectionFactory"/>
  35. <property name="keySerializer">
  36. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
  37. </property>
  38. <property name="valueSerializer">
  39. <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
  40. </property>
  41. <!--开启事务-->
  42. <property name="enableTransactionSupport" value="true"/>
  43. </bean>
  44.  
  45. <!-- 配置redis缓存管理器 -->
  46. <bean id="redisCacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
  47. <constructor-arg name="redisOperations" ref="redisTemplate"/>
  48. <property name="defaultExpiration" value="${redis.expiration}"/>
  49. </bean>
  50. <!-- 配置RedisCacheConfig -->
  51. <bean id="redisCacheConfig" class="com.springredis.config.redis.RedisCacheConfig">
  52. <constructor-arg ref="jedisConnectionFactory"/>
  53. <constructor-arg ref="redisTemplate"/>
  54. <constructor-arg ref="redisCacheManager"/>
  55. </bean>
  56. <bean id="keyGenerator" class="com.springredis.config.redis.KeyGenerator"/>
  57.  
  58. <cache:annotation-driven cache-manager="redisCacheManager" key-generator="keyGenerator"/>
  59.  
  60. </beans>

5,在config的redis文件下新建RedisCacheConfig类

  1. package com.springredis.config.redis;
  2.  
  3. import org.springframework.cache.annotation.CachingConfigurerSupport;
  4. import org.springframework.cache.interceptor.KeyGenerator;
  5. import org.springframework.context.annotation.Bean;
  6. import org.springframework.data.redis.cache.RedisCacheManager;
  7. import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
  8. import org.springframework.data.redis.core.RedisTemplate;
  9.  
  10. import java.lang.reflect.Method;
  11.  
  12. /**
  13. * 文件描述:
  14. * 创建用户:emotion
  15. * 创建时间:2018/6/22
  16. */
  17. public class RedisCacheConfig extends CachingConfigurerSupport {
  18. private volatile JedisConnectionFactory jedisConnectionFactory;
  19. private volatile RedisTemplate<String, String> redisTemplate;
  20. private volatile RedisCacheManager redisCacheManager;
  21.  
  22. public RedisCacheConfig() {
  23. super();
  24. }
  25.  
  26. /**
  27. * 带参数的构造方法 初始化所有的成员变量
  28. *
  29. * @param jedisConnectionFactory
  30. * @param redisTemplate
  31. * @param redisCacheManager
  32. */
  33. public RedisCacheConfig(JedisConnectionFactory jedisConnectionFactory, RedisTemplate<String, String> redisTemplate,
  34. RedisCacheManager redisCacheManager) {
  35. this.jedisConnectionFactory = jedisConnectionFactory;
  36. this.redisTemplate = redisTemplate;
  37. this.redisCacheManager = redisCacheManager;
  38. }
  39.  
  40. public JedisConnectionFactory getJedisConnecionFactory() {
  41. return jedisConnectionFactory;
  42. }
  43.  
  44. public RedisTemplate<String, String> getRedisTemplate() {
  45. return redisTemplate;
  46. }
  47.  
  48. public RedisCacheManager getRedisCacheManager() {
  49. return redisCacheManager;
  50. }
  51.  
  52. }

6,在redis下新建KeyGenerator类

  1. package com.springredis.config.redis;
  2.  
  3. import java.lang.reflect.Method;
  4.  
  5. /**
  6. * 文件描述:
  7. * 创建用户:emotion
  8. * 创建时间:2018/6/22
  9. */
  10. public class KeyGenerator implements org.springframework.cache.interceptor.KeyGenerator {
  11. @Override
  12. public Object generate(Object o, Method method, Object... params) {
  13. //规定 本类名+方法名+参数名 为key
  14. StringBuilder sb = new StringBuilder();
  15. sb.append(o.getClass().getName());
  16. sb.append("-");
  17. sb.append(method.getName());
  18. sb.append("-");
  19. for (Object param : params) {
  20. sb.append(param.toString());
  21. }
  22. return sb.toString();
  23. }
  24. }

7,在spring的applicationContext.xml中引入spring-redis.xml

  1. <import resource="spring-redis.xml"/>

8,编写web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  3. <display-name>Archetype Created Web Application</display-name>
  4.  
  5. <context-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>classpath:spring/applicationContext.xml</param-value>
  8. </context-param>
  9. <!-- 配置编码方式-->
  10. <filter>
  11. <filter-name>encodingFilter</filter-name>
  12. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  13. <init-param>
  14. <param-name>encoding</param-name>
  15. <param-value>UTF-8</param-value>
  16. </init-param>
  17. <init-param>
  18. <param-name>forceEncoding</param-name>
  19. <param-value>true</param-value>
  20. </init-param>
  21. </filter>
  22. <filter-mapping>
  23. <filter-name>encodingFilter</filter-name>
  24. <url-pattern>/*</url-pattern>
  25. </filter-mapping>
  26.  
  27. <!-- 配置springmvc的前端控制器 指向spring-mvc.xml 程序在启动的时候就加载springmvc 可以接受所有请求 load-on-startup:表示启动容器时初始化该Servlet; -->
  28. <servlet>
  29. <servlet-name>springServlet</servlet-name>
  30. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  31. <!-- 可以自定义servlet.xml配置文件的位置和名称, 默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml -->
  32. <init-param>
  33. <param-name>contextConfigLocation</param-name>
  34. <param-value>classpath:spring/applicationContext.xml</param-value>
  35. </init-param>
  36.  
  37. <load-on-startup>1</load-on-startup>
  38. </servlet>
  39. <!-- 将前端URL请求和后台处理方法controller建立对应关系-->
  40. <servlet-mapping>
  41. <servlet-name>springServlet</servlet-name>
  42. <url-pattern>/</url-pattern>
  43. </servlet-mapping>
  44. <!--&lt;!&ndash; Spring配置 &ndash;&gt;-->
  45.  
  46. <listener>
  47. <listener-class>
  48. org.springframework.web.context.ContextLoaderListener
  49. </listener-class>
  50. </listener>
  51. <welcome-file-list>
  52. <welcome-file>/index.jsp</welcome-file>
  53. </welcome-file-list>
  54. </web-app>

9,编写对应的实体类,mapper接口,controller控制器,service业务

9.1,User实体类

  1. import com.fasterxml.jackson.core.SerializableString;
  2. import java.io.Serializable;
  3.  
  4. public class User implements Serializable {//如果不实现Serializable接口会报错
  5. private Integer id;
  6. private String name;
  7. private String sex;
  8. private Integer age;
  9. public Integer getId() {
  10. return id;
  11. }
  12. public void setId(Integer id) {
  13. this.id = id;
  14. }
  15. public String getName() {
  16. return name;
  17. }
  18. public void setName(String name) {
  19. this.name = name;
  20. }
  21. public String getSex() {
  22. return sex;
  23. }
  24. public void setSex(String sex) {
  25. this.sex = sex;
  26. }
  27. public Integer getAge() {
  28. return age;
  29. }
  30. public void setAge(Integer age) {
  31. this.age = age;
  32. }
  33. }

9.2,编写mapper接口

  1. package com.springredis.dao;
  2.  
  3. import com.springredis.entity.User;
  4.  
  5. import java.util.List;
  6.  
  7. public interface UserDao {
  8. List<User> getLists();
  9.  
  10. Integer add(User user);
  11. }

9.4,在Sqlmap下编写UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.springredis.dao.UserDao" >
  4. <select id="getLists" resultType="com.springredis.entity.User">
  5. SELECT * FROM users
  6. </select>
  7. <insert id="add" parameterType="com.springredis.entity.User">
  8. INSERT INTO users (name,sex,age)VALUES (#{name},#{sex},#{age})
  9. </insert>
  10. </mapper>

9.5,编写service业务层

9.5.1:编写service接口

  1. package com.springredis.service;
  2.  
  3. import com.springredis.entity.User;
  4.  
  5. import java.util.List;
  6.  
  7. public interface IUserService {
  8. List<User> getLists();
  9. Integer add(User user);
  10. }

9.5.2编写service实现类

  1. package com.springredis.service;
  2.  
  3. import com.springredis.entity.User;
  4. import com.springredis.dao.UserDao;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.cache.annotation.CacheEvict;
  7. import org.springframework.cache.annotation.Cacheable;
  8. import org.springframework.stereotype.Service;
  9.  
  10. import java.util.List;
  11.  
  12. /**
  13. * 文件描述:
  14. * 创建用户:emotion
  15. * 创建时间:2018/6/22
  16. */
  17. @Service
  18. public class UserServiceImpl implements IUserService {
  19.  
  20. @Autowired
  21. private UserDao userDao;
  22.  
  23. @Cacheable(value="user")
  24. @Override
  25. public List<User> getLists() {
  26. System.out.println("打印语句则没有走缓存");
  27. return userDao.getLists();
  28. }
  29.  
  30. @CacheEvict(value= "user",allEntries=true)//清空缓存,
  31. @Override
  32. public Integer add(User user) {
  33. return userDao.add(user);
  34. }
  35. }
  1. 缓存机制说明:
    所有的查询结果都放进了缓存,也就是把MySQL查询的结果放到了redis中去,
  2. 然后第二次发起该条查询时就可以从redis中去读取查询的结果,从而不与MySQL交互,从而达到优化的效果,
  3. redis的查询速度之于MySQL的查询速度相当于 内存读写速度 /硬盘读写速度
  4. @Cacheable("users")注解的意义就是把该方法的查询结果放到redis中去,下一次再发起查询就去redis中去取,存在redis中的数据的key就是users
  5. 要是写增加一个用户则需要把原来的key(users)清除掉
    @CacheEvict(value={"users","users1"},allEntries=true) 的意思就是执行该方法后要清除rediskey名称为a,b的数据;
  1. 9.6,编写Controller控制器
  1. package com.springredis.controller;
  2.  
  3. import com.springredis.entity.User;
  4. import com.springredis.service.IUserService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.ResponseBody;
  9. import org.springframework.web.bind.annotation.RestController;
  10.  
  11. import java.util.List;
  12.  
  13. @Controller
  14. public class UserController {
  15.  
  16. @Autowired
  17. private IUserService userService;
  18.  
  19. @RequestMapping("/list")
  20. @ResponseBody
  21. public List<User> getLists(){
  22. return userService.getLists();
  23. }
  24. @RequestMapping("/add")
  25. @ResponseBody
  26. public boolean add(User user){
  27. return userService.add(user)>0;
  28. }
  29. }
  1.  
  1.  

此文章制作案例,不做具体的详解,下一篇文章做具体讲解,,

Spring+SpringMVC+Mybatis整合redis的更多相关文章

  1. Spring+springmvc+Mybatis整合案例 annotation版(myeclipse)详细版

    Spring+springmvc+Mybatis整合案例 Version:annotation版 文档结构图: 从底层开始做起: 01.配置web.xml文件 <?xml version=&qu ...

  2. Spring+springmvc+Mybatis整合案例 xml配置版(myeclipse)详细版

    Spring+springmvc+Mybatis整合案例 Version:xml版(myeclipse) 文档结构图: 从底层开始做起: 01.配置web.xml文件 <?xml version ...

  3. 框架篇:Spring+SpringMVC+Mybatis整合开发

    前言: 前面我已搭建过ssh框架(http://www.cnblogs.com/xrog/p/6359706.html),然而mybatis表示不服啊. Mybatis:"我抗议!" ...

  4. ssm之spring+springmvc+mybatis整合初探

    1.基本目录如下  2.首先是向lib中加入相应的jar包  3.然后在web.xml中加入配置,使spring和springmvc配置文件起作用. <?xml version="1. ...

  5. Spring+SpringMVC+MyBatis整合(easyUI、AdminLte3)

    实战篇(付费教程) 花了几天的时间,做了一个网站小 Demo,最终效果也与此网站类似.以下是这次实战项目的 Demo 演示. 登录页: 富文本编辑页: 图片上传: 退出登录: SSM 搭建精美实用的管 ...

  6. Spring+SpringMVC+MyBatis整合进阶篇(四)RESTful实战(前端代码修改)

    前言 前文<RESTful API实战笔记(接口设计及Java后端实现)>中介绍了RESTful中后端开发的实现,主要是接口地址修改和返回数据的格式及规范的修改,本文则简单介绍一下,RES ...

  7. Spring+SpringMVC+MyBatis整合基础篇(二)牛刀小试

    前言 承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. 项目展示地址,点这里http://ssm-demo.13blog.site,账号:admin 密码: ...

  8. Spring+SpringMVC+MyBatis整合基础篇(三)搭建步骤

    作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载. 框架介绍 Spring SpringMVC MyBatis easyUI ...

  9. Spring+SpringMVC+MyBatis整合优化篇

    优化篇 Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log Spring+SpringMVC+MyBatis+easyUI整合优化篇 ...

随机推荐

  1. 解压*.tar.bz2的坑

    下了一个压缩包,tar -xf 解压不了 解决办法: 装了bzip2工具 bzip2 -d **.tar.bz2 //将文件解压成**.tar tar -xf **.tar //解包 听说可以 tar ...

  2. 安装python-empy

    sudo python setup.py install

  3. Java 设计模式系列(一)单例模式

    Java 设计模式系列(一)单例模式 保证一个类只有一个实例,并且提供一个访可该实例的全局访问点. 一.懒汉式单例 /** * 懒汉式单例类:在第一次调用的时候实例化自己 * 1. 构造器私有化,避免 ...

  4. DB2存储过程通过游标实现批量数据处理

    CREATE procedure proc_change()LANGUAGE SQLBEGIN DECLARE l_id INTEGER; DECLARE l_detail_id INTEGER; D ...

  5. mongo学习-TTL索引 过期数据

    在mongo中我们可以设置文档的过期时间,超过时间,文档会自动删除.(2.x版本中  固定结合也支持,但是到了3.x中 固定集合这个索引不好用) 用法: 1.创建一个db:db.createColle ...

  6. java类的泛型DAO

    @Transactional public abstract class DAOSupport<T> implements DAO<T> { protected Class&l ...

  7. io.fabric8.kubernetes对pv和pvc的增删查改

    1.新建maven项目k8stest,pom.xml如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns: ...

  8. Java学习总结——常见问题及解决方法

    CYTX项目开发中遇到的问题及解决方法 Android开发各类常见错误解决方案: 使用Android Studio遇到的问题及解决过程 登录注册部分问题及解决: 1.问题:"No targe ...

  9. HDU1863 畅通工程 2017-04-12 19:25 59人阅读 评论(0) 收藏

    畅通工程 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  10. Oracle EBS Patch Demo

    Oracle EBS APP & DB 打补丁过程简述l例子: 打 Patch#   11843100:R12.CAC.B 打PATCH之前先查询一下是否已经有了这个PATCH. SELECT ...