5. 添加功能的实现

新建一个Action:RClasAction,实现向Redis添加课程数据,并同步到MySQL。

package com.school.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import com.opensymphony.xwork2.ActionSupport;
import com.school.entity.Clas;
import com.school.redisclient.RedisService;
import com.school.redisclient.RedisTool;
import com.school.service.ClasService; @SuppressWarnings("serial")
public class RClasAction extends ActionSupport { @Autowired
private ClasService clasService; RedisService rs = RedisTool.getRedisService();
List<Clas> claslist = new ArrayList<Clas>(); private Clas clas;
public Clas getClas() {
return clas;
}
public void setClas(Clas Clas) {
this.clas = Clas;
} public String execute(){
saveClas(clas);
return SUCCESS;
} @SuppressWarnings({ "rawtypes", "unchecked" })
private void saveClas(Clas c){
List<String> ids = rs.getList("clas:id");
// clas:id
int num = ids.size();
int id = Integer.parseInt(ids.get(num-1)) + 1;
rs.rightPushList("clas:id", String.valueOf(id));
// clas:count
int count = Integer.parseInt(rs.get("clas:count"));
rs.set("clas:count", String.valueOf(count+1), -1);
// 增加
HashMap hashmap = new HashMap();
hashmap.put("ID", String.valueOf(id));
hashmap.put("NAME", clas.getName());
hashmap.put("COMMENT", clas.getComment());
rs.addHash("clas:" + id, hashmap);
// 同步到MySQL
clasService.saveClas(clas);
} }

clas:id是一个List类型的Key-Value,记录了所有的课程ID,取出最后一个ID,再+1,作为增加的课程的ID,同时clas:count的值也要+1。使用addHash()方法向Redis添加了一个Hash类型的Key-Value(也就是一门课程):

        @SuppressWarnings({ "unchecked", "rawtypes" })
public synchronized void addHash(K key, HashMap map){
redisTemplate.opsForHash().putAll(key, map);
}

同时将该门课程增加到MySQL。

6. 删除功能的实现

新建一个Action:RClasDeleteAction,实现删除Redis的课程数据,并同步到MySQL。

package com.school.action;

import org.springframework.beans.factory.annotation.Autowired;

import com.opensymphony.xwork2.ActionSupport;
import com.school.redisclient.RedisService;
import com.school.redisclient.RedisTool;
import com.school.service.ClasService; @SuppressWarnings("serial")
public class RClasDeleteAction extends ActionSupport { @Autowired
private ClasService clasService; RedisService rs = RedisTool.getRedisService(); private int id;
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
} public String execute(){
deleteClas(id);
// 同步到MySQL
clasService.deleteClas(id);
return SUCCESS;
} private void deleteClas(int id){
// 删除
rs.del("clas:" + id);
// clas:count
int count = Integer.parseInt(rs.get("clas:count"));
rs.set("clas:count", String.valueOf(count-1), -1);
// clas:id
rs.delListItem("clas:id", String.valueOf(id));
} }

直接删除clas:id,再将clas:count的值-1,这两步比较简单,复杂的是从clas:id中删除该课程的ID,使用了delListItem()方法来实现:

        @Override
public synchronized void delListItem(K key, V value){
redisTemplate.opsForList().remove(key, 1, value);
}

redisTemplate.opsForList().remove()方法类似于LREM命令。最后在MySQL中也删除相同的课程。

7. 修改功能的实现

新建一个Action:RClasUpdateAction,实现删除Redis的课程数据,并同步到MySQL。

package com.school.action;

import java.util.HashMap;

import org.springframework.beans.factory.annotation.Autowired;

import com.opensymphony.xwork2.ActionSupport;
import com.school.entity.Clas;
import com.school.redisclient.RedisService;
import com.school.redisclient.RedisTool;
import com.school.service.ClasService; @SuppressWarnings("serial")
public class RClasUpdateAction extends ActionSupport{ @Autowired
private ClasService clasService; RedisService rs = RedisTool.getRedisService(); private Clas clas;
public Clas getClas() {
return clas;
}
public void setClas(Clas clas) {
this.clas = clas;
} @SuppressWarnings({ "unchecked", "rawtypes" })
public String execute(){
HashMap hashmap = new HashMap();
hashmap.put("ID", String.valueOf(clas.getId()));
hashmap.put("NAME", clas.getName());
hashmap.put("COMMENT", clas.getComment());
rs.putHash("clas:" + clas.getId(), hashmap);
// 同步到MySQL
clasService.updateClas(clas);
return SUCCESS;
} }

使用了putHash()方法来更新:

        @SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public synchronized void putHash(K key, HashMap map){
redisTemplate.boundHashOps(key).putAll(map);
}

同时在MySQL做相同的更新操作。

SSH框架和Redis的整合(2)的更多相关文章

  1. SSH框架和Redis的整合(1)

    一个已有的Struts+Spring+Hibernate项目,以前使用MySQL数据库,现在想把Redis也整合进去. 1. 相关Jar文件 下载并导入以下3个Jar文件: commons-pool2 ...

  2. J2EE进阶(六)SSH框架工作流程项目整合实例讲解

    J2EE进阶(六)SSH框架工作流程项目整合实例讲解 请求流程 经过实际项目的进行,结合三大框架各自的运行机理可分析得出SSH整合框架的大致工作流程. 首先查看一下客户端的请求信息: 对于一个Web项 ...

  3. SSH框架整合

    SSH框架整合 一.原理图 action:(struts2) 1.获取表单的数据 2.表单的验证,例如非空验证,email验证等 3.调用service,并把数据传递给service Service: ...

  4. ssh框架整合---- spring 4.0 + struts 2.3.16 + maven ss整合超简单实例

    一 . 需求 学了这么久的ssh,一直都是别人整合好的框架去写代码,自己实际动手时才发现框架配置真是很坑爹,一不小心就踏错,真是纸上得来终觉浅! 本文将记录整合struts + spring的过程 , ...

  5. dwr与ssh框架整合教程

    (1)dwr与ssh框架整合教程dwr框架介绍. DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开 发人员开发包含AJ ...

  6. [Java] SSH框架笔记_框架整合示例(一)

    本文描述的是框架SSH集成的示例,由于在这个过程中有一些小的细节容易被遗忘,特别撰写了一篇小的博文来记录这个过程,希望对自己以及后来者能够起到积极意义. 本文中使用的框架和版本号为: struts-2 ...

  7. 【转载】SSH框架总结(将网上朋友写的给整合了下)

    一.Struts 在没有学习SSH框架前,我们一般采用Jsp+javabean+servlet开发,这里就是MVC架构.而Struts其实就是替代了Servlet,我们知道Servlet在一般的开发中 ...

  8. ssh框架整合之登录以及增删改查

    1.首先阐述一下我用得开发工具,myeclipse2017+oracle,所以我的基本配置步骤可能不一样,下面我用几张图来详解我的开发步骤. ---1先配置structs (Target 选择apac ...

  9. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

随机推荐

  1. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  2. CoreCRM 开发实录——开始之新项目的技术选择

    2016年11月,接受了一个工作,是对"悟空CRM"进行一些修补.这是一个不错的 CRM,开源,并提供一个 SaaS 的服务.正好微软的 .NET Core 和 ASP.NET C ...

  3. Android数据加密之SHA安全散列算法

    前言: 对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好 ...

  4. 创建APPID&&部署服务端教程

    创建APPID&&部署服务端 一.创建APPID 1.打开https://console.developers.google.com ,左击顶部Project,然后左击创建项目 2.输 ...

  5. SharpMap简析

    1.背景 因为项目需求,需要基于开源项目来对SHP进行相关操作.涉及到的主要功能就是加载SHP读取其中的属性信息和几何信息.于是选择了Sharpmap来进行,在使用中对其相关功能做了初步了解,做个总结 ...

  6. Linux之搭建自己的根文件系统

    Hi!大家好,我是CrazyCatJack.又和大家见面了.今天给大家带来的是构建Linux下的根文件系统.希望大家看过之后都能构建出符合自己需求的根文件系统^_^ 1.内容概述 1.构造过程 今天给 ...

  7. c# 基础 object ,new操作符,类型转换

    参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...

  8. 【uwp】浅谈China Daily 中划词翻译的实现

    学习uwp开发也有一段时间了,最近上架了一个小应用(China Daily),现在准备将开发中所学到的一些东西拿出来跟大家分享交流一下. 先给出应用的下载链接:China Daily , 感兴趣的童鞋 ...

  9. JAVA构造时成员初始化的陷阱

    让我们先来看两个类:Base和Derived类.注意其中的whenAmISet成员变量,和方法preProcess(). 情景1:(子类无构造方法) class Base { Base() { pre ...

  10. 使用HTML5的cavas实现的一个画板

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-e ...