1. 首页轮播图动态展示效果图
1.1. 功能分析
根据分类id查询内容列表,把内容展示到首页。
内容分类id需要是固定的。可以配置到属性文件中。
展示首页之前,先查询内容列表,然后展示到首页。
1、前台内容动态展示
2、Redis服务器搭建
3、向业务逻辑中添加缓存。
4、使用redis做缓存
5、缓存同步。
1.1. Dao层
单表查询。可以使用逆向工程。
1.1. Service层
参数:内容分类id
返回值:List<TbContent>
业务逻辑:
根据分类id查询内容列表。
我们这需要使用一下redis缓存动态图片减少读取数据库的负荷
这是读取resource.properties配置键对的值
service实现层代码
@Autowired private TbContentMapper contentMapper; @Autowired private JedisClient jedisClient;
@Override public List<TbContent> getContentByCid(Long content_lunbo_id) { //查询缓存首先查询redis中是否有键对应的值得缓存数据 try { //如果缓存中直接响应结果查询对应的content_lunbo_id键Sting类型所有要强行转换一下类型 String json = jedisClient.hget(CONTENT_LIST,content_lunbo_id+""); // 判断是否为空 if (StringUtils.isNoneBlank(json)){ //查询到缓存中的数据为json格式的数据所以要转换成list类型的数据 List<TbContent> list = JsonUtils.jsonToList(json,TbContent.class); return list; } }catch (Exception e){ e.printStackTrace(); } //如果没有查询数据就查询数据库中的数据 TbContentExample example =new TbContentExample(); TbContentExample.Criteria criteria = example.createCriteria(); //设置条件 criteria.andCategoryIdEqualTo(content_lunbo_id); //执行查询操作并返回集合 List<TbContent> contents = contentMapper.selectByExampleWithBLOBs(example); //向缓存中添加数据(因为缓存中没有cid对应的值所有第一次查询结果添加进缓存) try { //添加到缓存值对应的是String类型的数据所有要转换List为json类型的数据 jedisClient.hset(CONTENT_LIST,content_lunbo_id+"",JsonUtils.objectToJson(contents)); }catch (Exception e){ e.printStackTrace(); } //返回结果 return contents; }
applicationContent-redis.xml这里我们使用的redis单机版做测试只有等项目发出后再用集群
springmvc.xml中添加引用:
Controller层
/** * 首页展示Controller * */ @Controller public class IndexController { //首页图片轮播id @Value("${CONTENT_LUNBO_ID}") private Long CONTENT_LUNBO_ID; @Autowired private ContentService contentService; @RequestMapping("/index") public String showIndex(Model model) { //查询内容列表 List<TbContent> ad1List=contentService.getContentByCid(CONTENT_LUNBO_ID); //把结果传递给页面 model.addAttribute("ad1List",ad1List); return "index"; }pom.xml添加依赖
查看redis中缓存数据