Java springboot之Mongodb增删改查

1、添加依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>

完整pom.xm文件

<?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 https://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.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.vue</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.49</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.26</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
View Code

2、applicaiton.yml

server:
  port: 8081

mybatis-plus:
    typeAliasesPackage: com.vue.demo.entity
    mapperLocations: classpath:mapper/*.xml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: yang156122
    driver-class-name: com.mysql.jdbc.Driver
    # 使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
  redis:
    #redis单机配置
    host: localhost
    port: 6379
    # 选择redis的数据库的分库
    database: 5
    #redis连接池配置
    jedis:
      pool:
        max-idle: 10
        min-idle: 5
        max-active: 100
        max-wait: 3000
        timeout: 6005
  data:
    mongodb:
      uri: mongodb://localhost:27017/userArticle

3、Mongodb增删改查

package com.vue.demo.service.serviceimpl;

import com.alibaba.fastjson.JSONObject;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.vue.demo.entity.UserArticle;
import com.vue.demo.service.UserArticleService;
import org.springframework.beans.factory.annotation.Autowired;
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;

/**
 * @author yangwj
 * @date 2020/3/28 11:07
 */

@Service
public class UserArticleServiceImpl implements UserArticleService {
    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public UserArticle getArticleByTitle(String title) {
        Query query = new Query();
        query.addCriteria(Criteria.where("articleTitle").is(title));
        UserArticle article = mongoTemplate.findOne(query, UserArticle.class);
        return article;
    }

    @Override
    public UserArticle insertArticle(UserArticle userArticle) {
        List<UserArticle> userArticleList = mongoTemplate.findAll(UserArticle.class);
        if (userArticleList.isEmpty()) {
            userArticle.setId(1);
        } else {
            userArticle.setId(userArticleList.size() + 1);
        }
        UserArticle article = mongoTemplate.save(userArticle);
        return article;
    }

    @Override
    public List<UserArticle> getAllArticles() {
        List<UserArticle> userArticles = mongoTemplate.findAll(UserArticle.class);
        return userArticles;
    }

    @Override
    public DeleteResult delByName(String name) {
        Query query = new Query();
        query.addCriteria(Criteria.where("articleTitle").is(name));
        DeleteResult result =mongoTemplate.remove(query,UserArticle.class);
        return result;
    }

    @Override
    public UpdateResult updateReadNumByTitle(String title) {
        Query query = new Query();
        query.addCriteria(Criteria.where("articleTitle").is(title));
        UserArticle article = mongoTemplate.findOne(query, UserArticle.class);
        Integer readNum = article.getReadNum() == null? 1: article.getReadNum()+1;
        article.setReadNum(readNum);
        Update update = new Update();
        update.set("readNum",article.getReadNum());
        UpdateResult result =  mongoTemplate.updateFirst(query,update,UserArticle.class);
        return result;
    }

    @Override
    public UpdateResult addUserComment(String title, String comment) {
        JSONObject jsonObject = new JSONObject();
        Query query = new Query();
        query.addCriteria(Criteria.where("articleTitle").is(title));
        UserArticle article = mongoTemplate.findOne(query, UserArticle.class);
        if(article.getComment() == null){
            jsonObject.put(title,comment);
        }else {
            jsonObject = (JSONObject) JSONObject.parse(article.getComment());
            jsonObject.put(title,comment);
        }
        Integer commentNum = article.getCommentNum() == null ? 1:article.getCommentNum()+1;
        Update update = new Update();
        update.set("comment",jsonObject.toJSONString());
        update.set("commentNum",commentNum);
        UpdateResult result =  mongoTemplate.updateFirst(query,update,UserArticle.class);
        return result;
    }
}

github地址https://github.com/812406210/vue-demo.git

完毕!

 

posted @ 2020-03-29 16:28  小白啊小白,Fighting  阅读(788)  评论(0编辑  收藏  举报