springmvc + redis 的方法测试

基于上一篇已给出的配置好的redis,以下是摘自网上的测试,并自己简单验证.

1.java目录结构

2.具体代码

BaseModel.java

package cn.infisa.base;

import java.io.Serializable;

public abstract class BaseModel implements Serializable {

}

BaseMultiController.java

package cn.infisa.base;

import java.util.Map;
import org.springframework.web.servlet.ModelAndView;

public class BaseMultiController {
    protected ModelAndView toView(final String url,final Map<String,Object> map)
    {  
        ModelAndView  view = new ModelAndView(url);
        return view;
    }
}

RedisGeneratorDao.java

package cn.infisa.base;

import java.io.Serializable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
 
public abstract class RedisGeneratorDao<K extends Serializable, V extends Serializable>  {
   
  @Autowired
  protected RedisTemplate<K,V> redisTemplate ;
 
  /**
   * 设置redisTemplate
   * @param redisTemplate the redisTemplate to set
   */ 
  public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) { 
    this.redisTemplate = redisTemplate; 
  } 
     
  /**
   * 获取 RedisSerializer
   * <br>------------------------------<br>
   */ 
  protected RedisSerializer<String> getRedisSerializer() { 
    return redisTemplate.getStringSerializer(); 
  }
}

MemberDao.java

package cn.infisa.dao;

import java.util.List;
import cn.infisa.model.Member;

public interface MemberDao {
    boolean add(Member member);
 
    abstract boolean add(List<Member> list);
 
    void delete(String key);
 
    Member get(String keyId);
     
}

MemberDaoImpl.java

package cn.infisa.dao;

import java.util.ArrayList;
import java.util.List;

import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.stereotype.Repository;
import org.springframework.util.Assert;

import cn.infisa.base.RedisGeneratorDao;
import cn.infisa.model.Member;

@Repository(value="memberDao")
public class MemberDaoImpl extends RedisGeneratorDao<String,Member> implements MemberDao{
   
  /**
   * 添加对象
   */
  @Override
  public boolean add(final Member member) { 
    boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { 
      public Boolean doInRedis(RedisConnection connection) 
          throws DataAccessException { 
        RedisSerializer<String> serializer = getRedisSerializer(); 
        byte[] key  = serializer.serialize(member.getId()); 
        byte[] name = serializer.serialize(member.getNickname()); 
        return connection.setNX(key, name); 
      } 
    }); 
    return result; 
  } 
 
  /**
   * 添加集合
   */
  @Override
  public boolean add(final List<Member> list) {
    Assert.notEmpty(list); 
    boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { 
      public Boolean doInRedis(RedisConnection connection) 
          throws DataAccessException { 
        RedisSerializer<String> serializer = getRedisSerializer(); 
        for (Member member : list) { 
          byte[] key  = serializer.serialize(member.getId()); 
          byte[] name = serializer.serialize(member.getNickname()); 
          connection.setNX(key, name); 
        } 
        return true; 
      } 
    }, false, true); 
    return result;
  } 
   
  /**
   * 删除对象 ,依赖key
   */
  @Override
  public void delete(String key) { 
    List<String> list = new ArrayList<String>(); 
    list.add(key); 
    delete(list); 
  } 
   
  /**
   * 删除集合 ,依赖key集合
   */
  public void delete(List<String> keys) { 
    redisTemplate.delete(keys); 
  } 
   
  /**
   * 修改对象
   */
  public boolean update(final Member member) { 
    String key = member.getId(); 
    if (get(key) == null) { 
      throw new NullPointerException("数据行不存在, key = " + key); 
    } 
    boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { 
      public Boolean doInRedis(RedisConnection connection) 
          throws DataAccessException { 
        RedisSerializer<String> serializer = getRedisSerializer(); 
        byte[] key  = serializer.serialize(member.getId()); 
        byte[] name = serializer.serialize(member.getNickname()); 
        connection.set(key, name); 
        return true; 
      } 
    }); 
    return result; 
  } 
   
  /**
   * 根据key获取对象
   */
  @Override
  public Member get(final String keyId) { 
    Member result = redisTemplate.execute(new RedisCallback<Member>() { 
      public Member doInRedis(RedisConnection connection) 
          throws DataAccessException { 
        RedisSerializer<String> serializer = getRedisSerializer(); 
        byte[] key = serializer.serialize(keyId); 
        byte[] value = connection.get(key); 
        if (value == null) { 
          return null; 
        } 
        String nickname = serializer.deserialize(value); 
        return new Member(keyId, nickname); 
      } 
    }); 
    return result; 
  } 
 
}

Member.java

package cn.infisa.model;

import org.apache.commons.lang.builder.ToStringBuilder;

import cn.infisa.base.BaseModel;

public class Member extends BaseModel{
	  
	  private static final long serialVersionUID = -1959528436584592183L;
	  private String id;
	  private String nickname;
	   
	  public Member(){}
	   
	  public Member(String id, String nickname){
	    this.setId(id);
	    this.setNickname(nickname);
	  }
	   
	  public String getId() {
	    return id;
	  }
	   
	  public void setId(String id) {
	    this.id = id;
	  }
	   
	  public String getNickname() {
	    return nickname;
	  }
	   
	  public void setNickname(String nickname) {
	    this.nickname = nickname;
	  }
	  
	  @Override
	public String toString() {
		// TODO Auto-generated method stub
		return ToStringBuilder.reflectionToString(this);
	}
}

MemberService.java

package cn.infisa.service;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.infisa.dao.MemberDao;
import cn.infisa.model.Member;

@Service
public class MemberService {
	@Resource(name="memberDao")
    private MemberDao memberDao;
     
    public void setMemberDao(MemberDao memberDao)
    {
       this.memberDao = memberDao;
    }
      
    public void add(Member member){
        memberDao.add(member);
    }
     
    public void delete(String id){
        memberDao.delete(id);
    }
     
    public Member get(String id)
    {
        return memberDao.get(id);
    }
}

MemberController.java

package cn.infisa.web;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springside.modules.mapper.JsonMapper;

import cn.infisa.base.BaseMultiController;
import cn.infisa.model.Member;
import cn.infisa.service.MemberService;
 

 
@Controller
@RequestMapping(value = "/member")
public class MemberController extends BaseMultiController {
	private final static JsonMapper mapper = JsonMapper.nonEmptyMapper();
	
    @Autowired
    private MemberService memberService;
 
    public void setMemberService(MemberService memberService) {
        this.memberService = memberService;
    }
 
    @RequestMapping(value = { "/add", "/add.html" }, method = { RequestMethod.GET })
    public ModelAndView add(HttpServletRequest request,
            HttpServletResponse response) {
        Map<String, Object> map = new HashMap<String, Object>();
        Member member = new Member();
        member.setId("1");
        member.setNickname("guoxiaoming");
        this.memberService.add(member);
         
        return toView("add", map);
    }
 
    @RequestMapping(value = { "/add", "/add.html" }, method = { RequestMethod.POST })
    public ModelAndView addMember(HttpServletRequest request,
            HttpServletResponse response,
            @ModelAttribute("member") Member member) {
        Map<String, Object> map = new HashMap<String, Object>();
        System.out.println(member);
        map.put("message", "成功添加数据到库," + member);
        this.memberService.add(member);
        return toView("message", map);
    }
 
    @RequestMapping(value = { "/{id:\\d+}/query", "/{id:\\d+}/query.html" }, method = {
            RequestMethod.GET, RequestMethod.POST })
    public ModelAndView queryMember(HttpServletRequest request,
            HttpServletResponse response, @PathVariable("id") String id) {
        Map<String, Object> map = new HashMap<String, Object>();
        System.out.println(id);
        Member member = this.memberService.get(id);
        if (null != member) {
            map.put("message", "查询Id=" + id + "的用户名为:" + member.getNickname());
        } else {
            map.put("message", "没有查询到与Id=" + id + "相关的数据");
        }
        return toView("message", map);
    }
 
    @RequestMapping(value = { "/{id:\\d+}/delete", "/{id:\\d+}/delete.html" }, method = {
            RequestMethod.GET, RequestMethod.POST })
    public ModelAndView deleteMember(HttpServletRequest request,
            HttpServletResponse response, @PathVariable("id") String id) {
        Map<String, Object> map = new HashMap<String, Object>();
        try {
            this.memberService.delete(id);
            map.put("message", "删除Id为" + id + "的用户成功.");
        } catch (Exception e) {
            e.printStackTrace();
            map.put("message", "删除Id为" + id + "的用户失败, " + e.getMessage());
        }
        return toView("message", map);
    }
    
    @RequestMapping(value="list")
    @ResponseBody
    public String dataList(HttpServletRequest request){
        Map<String, Object> map = new HashMap<String, Object>();
                
        Member member = new Member();
        member.setId("2");
        member.setNickname("zhangxiaoming");
        this.memberService.add(member);
        Member member2 = this.memberService.get("2");
        map.put("result", member2);
    	return mapper.toJson(map);
    }
}

        最后的list的连接是自己写的,因为网上没有给出add.html的具体代码,自己也没有写了,直接通过@responseBody,看页面接收的数据情况了;并且在终端用命令测试了数据的存储,确实通过代码将数据保存到redis中了,如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值