一、使用redis实现(不推荐,会增加业务代码维护)
@Service
public class ClazzServiceImpl implements ClazzService {
@Autowired
private ClazzDao clazzDao; //注入mapper
@Autowired
private RedisTemplate<String, Object> redisTemplate; //调用redis使用
@Override
public Clazz getById(Integer id) { //查询业务
//查询redis中是否存有缓存
ValueOperations<String, Object> forValue = redisTemplate.opsForValue();
Object o = forValue.get("clazz::" + id);
//如果有直接将redis查询的数据返回
if(o!=null){
return (Clazz) o;
}
//如果没有查询数据库并将数据库数据保存到redis缓存中
Clazz clazz = clazzDao.selectById(id);
if(clazz!=null){
forValue.set("clazz::" + id,clazz);
}
return clazz;
}
@Override
public Clazz update(Clazz clazz) { //修改业务
int i = clazzDao.updateById(clazz);
if(i>0){
//修改redis缓存的内容为修改后的数据
redisTemplate.opsForValue().set("clazz::"+clazz.getCid(),clazz);
}
return clazz;
}
@Override
public int delete(Integer cid) { //删除业务
int i = clazzDao.deleteById(cid);
if(i>0){
//删除redis缓存
redisTemplate.delete("clazz::"+cid);
}
return i;
}
}
二、使用缓存注解完成功能