当前位置: 首页 > news >正文

做简图的网站营销咨询

做简图的网站,营销咨询,北京企业官网网站建设,说说B2C网站建设的一些推广方法文章目录 项目搭建文章评论实体类的编写文章评论的基本增删改查根据上级ID查询文章评论的分页列表MongoTemplate实现评论点赞 GITHUB 项目搭建 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0&q…

文章目录

      • 项目搭建
      • 文章评论实体类的编写
      • 文章评论的基本增删改查
      • 根据上级ID查询文章评论的分页列表
      • MongoTemplate实现评论点赞
  • GITHUB

项目搭建

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>itcast</groupId><artifactId>article</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency></dependencies></project>

(2)创建application.yml

spring:#数据源配置data:mongodb:# 主机地址host: 192.168.218.131# 数据库database: articledb# 默认端口是27017port: 27017username: rootpassword: "123456"authentication-database: admin #必须设置设置权限认证的数据库

(3)创建启动类
onenewcode.article.ArticleApplication

package onenewcode.article;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class ArticleApplication {public static void main(String[] args) {SpringApplication.run(ArticleApplication.class, args);}}

(4)启动项目,看是否能正常启动,控制台没有错误。

文章评论实体类的编写

创建实体类 创建包onenewcode.article,包下建包po用于存放实体类,创建实体类
onenewcode.article.po.Comment

package onenewcode.article.service;import onenewcode.article.dao.CommentRepository;
import onenewcode.article.po.Comment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class CommentService {@Autowiredprivate CommentRepository commentRepository;@Autowiredprivate MongoTemplate mongoTemplate;/*** 保存一个评论* @param comment*/public void saveComment(Comment comment){//如果需要自定义主键,可以在这里指定主键;如果不指定主键,MongoDB会自动生成主键//设置一些默认初始值。。。//调用daocommentRepository.save(comment);}/*** 更新评论* @param comment*/public void updateComment(Comment comment){//调用daocommentRepository.save(comment);}/*** 根据id删除评论* @param id*/public void deleteCommentById(String id){//调用daocommentRepository.deleteById(id);}/*** 查询所有评论* @return*/public List<Comment> findCommentList(){//调用daoreturn commentRepository.findAll();}/*** 根据id查询评论* @param id* @return*/public Comment findCommentById(String id){//调用daoreturn commentRepository.findById(id).get();}public Page<Comment> findCommentListByParentid(String parentid,int page,int size) {return commentRepository.findByParentid(parentid,PageRequest.of(page-1,size));}public void updateCommentLikenum(String id){//  查询条件Query query = Query.query(Criteria.where("_id").is(id));//  更新条件Update update = new Update();update.inc("likenum");mongoTemplate.updateFirst(query,update,Comment.class);}
}

**说明:**索引可以大大提升查询效率,一般在查询字段上添加索引,索引的添加可以通过Mongo的命令来添加,也可以在Java的实体类中通过注解添加。

1)单字段索引注解@Indexed
org.springframework.data.mongodb.core.index.Indexed.class
声明该字段需要索引,建索引可以大大的提高查询效率。
Mongo命令参考:

db.comment.createIndex({“userid”:1})

2)复合索引注解@CompoundIndex
org.springframework.data.mongodb.core.index.CompoundIndex.class
复合索引的声明,建复合索引可以有效地提高多字段的查询效率。

db.comment.createIndex({“userid”:1,“nickname”:-1})

文章评论的基本增删改查

  1. 创建数据访问接口 onenewcode.article包下创建dao包,包下创建接口
    onenewcode.article.dao.CommentRepository
package onenewcode.article.dao;import onenewcode.article.po.Comment;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;//评论的持久层接口
public interface CommentRepository extends MongoRepository<Comment,String> {}
  1. 创建业务逻辑类 onenewcode.article包下创建service包,包下创建类
import onenewcode.article.po.Comment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;//评论的业务层
@Servicepublic class CommentService {//注入dao@Autowiredprivate CommentRepository commentRepository;/*** 保存一个评论* @param comment*/public void saveComment(Comment comment){//如果需要自定义主键,可以在这里指定主键;如果不指定主键,MongoDB会自动生成主键//设置一些默认初始值。。。//调用daocommentRepository.save(comment);}/*** 更新评论* @param comment*/public void updateComment(Comment comment){//调用daocommentRepository.save(comment);}/*** 根据id删除评论* @param id*/public void deleteCommentById(String id){//调用daocommentRepository.deleteById(id);}/*** 查询所有评论* @return*/public List<Comment> findCommentList(){//调用daoreturn commentRepository.findAll();}/*** 根据id查询评论* @param id* @return*/public Comment findCommentById(String id){//调用daoreturn commentRepository.findById(id).get();}}
  1. 新建Junit测试类,测试保存和查询所有:
package onenewcode.article.service;import onenewcode.article.ArticleApplication;
import onenewcode.article.po.Comment;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.test.context.junit4.SpringRunner;
import java.time.LocalDateTime;
import java.util.List;
//测试评论的业务层
//SpringBoot的Junit集成测试//SpringBoot的测试环境初始化,参数:启动类
@SpringBootTest
public class CommentServiceTest {//注入Service@Autowiredprivate CommentService commentService;/*** 保存一个评论*/@Testpublic void testSaveComment(){Comment comment=new Comment();comment.setArticleid("100000");comment.setContent("测试添加的数据");comment.setCreatedatetime(LocalDateTime.now());comment.setUserid("1003");comment.setNickname("凯撒大帝");comment.setState("1");comment.setLikenum(0);comment.setReplynum(0);commentService.saveComment(comment);}/*** 查询所有数据*/@Testpublic void testFindAll(){List<Comment> list = commentService.findCommentList();System.out.println(list);}/*** 测试根据id查询*/@Testpublic void testFindCommentById(){Comment comment = commentService.findCommentById("5d6a27b81b8d374798cf0b41");System.out.println(comment);}
}

添加结果:
请添加图片描述

根据上级ID查询文章评论的分页列表

  1. CommentRepository新增方法定义

//根据父id,查询子评论的分页列表
Page findByParentid(String parentid, Pageable pageable);

  1. CommentService新增方法
 /*** 根据父id查询分页列表* @param parentid* @param page* @param size* @return*/public Page<Comment> findCommentListPageByParentid(String parentid,int page ,int size){return commentRepository.findByParentid(parentid, PageRequest.of(page-1,size));}
  1. junit测试用例
 /*** 测试根据父id查询子评论的分页列表*/@Testpublic void testFindCommentListPageByParentid(){Page<Comment> pageResponse = commentService.findCommentListPageByParentid("3", 1, 2);System.out.println("----总记录数:"+pageResponse.getTotalElements());System.out.println("----当前页数据:"+pageResponse.getContent());}

MongoTemplate实现评论点赞

以下点赞的临时示例代码: CommentService 新增updateThumbup方法

   /*** 点赞-效率低* @param id*/public void updateCommentThumbupToIncrementingOld(String id){Comment comment = CommentRepository.findById(id).get();comment.setLikenum(comment.getLikenum()+1);CommentRepository.save(comment);}

以上方法虽然实现起来比较简单,但是执行效率并不高,因为我只需要将点赞数加1就可以了,没必要查询出所有字段修改后再更新所有字
段。(蝴蝶效应)
我们可以使用MongoTemplate类来实现对某列的操作。 (1)修改CommentService

//注入MongoTemplate@Autowiredprivate MongoTemplate mongoTemplate;/*** 点赞数+1* @param id*/public void updateCommentLikenum(String id){//查询对象
Query query=Query.query(Criteria.where("_id").is(id));//更新对象
Update update=new Update();//局部更新,相当于$set//        
update.set(key,value)//递增$inc//        
update.inc("likenum",1);update.inc("likenum");}//参数1:查询对象
//参数2:更新对象
//参数3:集合的名字或实体类的类型Comment.classmongoTemplate.updateFirst(query,update,"comment");
}
  1. 测试用例:
 /*** 点赞数+1*/@Testpublic void testUpdateCommentLikenum(){//对3号文档的点赞数+1commentService.updateCommentLikenum("3");}

GITHUB

代码仓库

https://github.com/onenewcode/MyMongoDB.git
http://www.hkea.cn/news/520728/

相关文章:

  • 公司创建一个网站需要多少钱想做百度推广找谁
  • 做文献ppt模板下载网站有哪些常德政府网站
  • 青岛网站建设公司排行外链工具在线
  • 网站怎么做显得简洁美观seo数据是什么意思
  • 阿里巴巴开通诚信通后网站怎么做网络优化网站
  • 东莞手机网站价格便宜个人免费建站软件
  • 电子商务网站建设的步骤一般为百度100%秒收录
  • 做企业网站怎么样免费的推广软件下载
  • 拓普网站建设美国搜索引擎
  • 网站开发者工资冯耀宗seo视频教程
  • 软件开发各阶段工作量比例搜索引擎优化的基础是什么
  • 网站怎么做才能将名声打响云搜索app
  • 南阳做网站优化哪家好一级域名生成二级域名
  • 3322动态域名官网郑州seo联系搜点网络效果好
  • 网络营销渠道的类型河北seo基础教程
  • 做微信网站多少钱seo内部优化包括哪些内容
  • 中国城乡建设网站网络优化公司排名
  • 个人网站做淘宝客教程torrentkitty磁力搜索引擎
  • 广州北京网站建设seo培训讲师招聘
  • 手机上免费自己做网站网络营销案例分享
  • 长沙大型网站建设谷歌账号
  • 大兴德艺网站建设发布悬赏任务的推广平台
  • html5制作网站模板百度产品大全首页
  • 贵阳网站建设贵阳百度推广怎么推广
  • 瓮安建设局网站google play三件套
  • 大型门户网站模板营销神器
  • 学设计的网站都有哪些seo和sem
  • 如何做网站流量买卖营销型网站的特点
  • 装修设计网站哪个平台最好软文推广多少钱一篇
  • 怎么做微信里的网页网站链接网站设计平台