项目搭建
<?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 # 默认端口是27017 port: 27017 username: root password: "123456" authentication-database: admin #必须设置设置权限认证的数据库
(3)创建启动类
onenewcode.article.ArticleApplication
package onenewcode.article; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public 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 { @Autowired private CommentRepository commentRepository; @Autowired private MongoTemplate mongoTemplate; /** * 保存一个评论 * @param comment */ public void saveComment(Comment comment){ //如果需要自定义主键,可以在这里指定主键;如果不指定主键,MongoDB会自动生成主键 //设置一些默认初始值。。。 //调用dao commentRepository.save(comment); } /** * 更新评论 * @param comment */ public void updateComment(Comment comment){ //调用dao commentRepository.save(comment); } /** * 根据id删除评论 * @param id */ public void deleteCommentById(String id){ //调用dao commentRepository.deleteById(id); } /** * 查询所有评论 * @return */ public List<Comment> findCommentList(){ //调用dao return commentRepository.findAll(); } /** * 根据id查询评论 * @param id * @return */ public Comment findCommentById(String id){ //调用dao return 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})
文章评论的基本增删改查
- 创建数据访问接口 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> { }
spring boot MongoDB实战(二)https://developer.aliyun.com/article/1391841