技术编程|SpringBoot怎么整合MongoDB?( 五 )


map=maps.get(0);Set
strings=map.keySet();System.out.println(strings);Blogblog=newBlog();blog.setId(Integer.valueOf(map.get("id").toString()));blog.setTitle((String)map.get("title"));blog.setAuthor((String)map.get("author"));blog.setCreate_time((Date)map.get("create_time"));blog.setViews((Integer)map.get("views"));mongoTemplate.insert(blog);one=blog;System.out.println("mysql拿的数据存到缓存中啦!");}returnone;}}
这里面的逻辑跟这张图一致
@Service 表示该类为一个service(事务处理) , 可以被注入到其他对象(Spring帮你管理) 。
@Autowired表示要注入对象的意思 。而MongoTemplate 就是已经封装好在Spring中操作MongoDB的对象 。测试
启动SpringBoot启动类 , 访问8080端口
第一次我们查询缓存中有的数据 , 第二次查询缓存中不存在的数据 , 可以看到第一次直接返回缓存中的结果 , 而第二次是先从数据库中拿 , 然后将数据保存到缓存中 , 再返回给前端
技术编程|SpringBoot怎么整合MongoDB?
文章图片

文章图片

缓存需要注意的问题
我们是用缓存保存热点数据的时候可能很少有更新或者删除的请款 , 但并不代表我们遇不到这种情况 , 所以我们在BlogService中还要添加一个updateBlogByTitle(String title,Integer views) , 方法主要是用来更新数据库和MongoDB缓存中的数据库缓存数据的修改注意缓存一致性
在BlogSerivce中添加update方法publicbooleanupdateBlogByTitle(Stringtitle,Integerviews){try{Queryquery=newQuery(Criteria.where("title").is(title));Updateupdate=newUpdate();update.set("views",views);mongoTemplate.upsert(query,update,Blog.class);Stringsql="updatemybatis.blogsetviews=?wheretitle=?";intisUpdate=jdbcTemplate.update(sql,views,title);if(isUpdate==0){returnfalse;}}catch(Exceptione){returnfalse;}returntrue;}
controller配置对应视图层@GetMapping("updateBlog")publicStringupdateBlog(Stringtitle,Integerviews){booleanb=blogService.updateBlogByTitle(title,views);returnb?"updatesuccess":"updatefailed";}运行
运行SpringBoot主类 , 访问项目地址
http://localhost:8080/updateBlog?title=Java如此简单&views=5533
可以发现缓存和数据库中的数据均更新成功
技术编程|SpringBoot怎么整合MongoDB?
文章图片

文章图片

缓存数据的删除
service添加删除逻辑publicbooleandeleteBlogByTitle(Stringtitle){try{Queryquery=newQuery(Criteria.where("title").is(title));mongoTemplate.remove(query,Blog.class);Stringsql="deletefrommybatis.blogwheretitle=?";intisDel=jdbcTemplate.update(sql,title);if(isDel==0){returnfalse;}}catch(Exceptione){returnfalse;}returntrue;}
controller添加视图@GetMapping("delete/{title}")publicStringdeleteBlog(@PathVariableStringtitle){booleanb=blogService.deleteBlogByTitle(title);returnb?"deletesuccess":"deletefailed";}测试
访问 http://localhost:8080/delete/MongoDB如此简单 发现缓存和数据库中的数据均被删除
最后添加的逻辑也基本一致 , 这里不再赘述 , 感兴趣的同学可以继续测试!做缓存时最重要的就是数据的一致性 , 千万不要出现缓存和数据库中的数据不一致的情况 。
版权声明:本文为博主原创文章 , 遵循 CC 4.0 BY-SA 版权协议 , 转载请附上原文出处链接和本声明 。


推荐阅读