springboot2操作mongodb基本功能

先上结构图

pom.xml

<?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.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mongodb</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mongodb_demo</name>
    <description>com mongodb 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>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </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>

属性文件

src/main/resources/application.properties

spring.data.mongodb.uri=mongodb://localhost:27017/test

1.编写文档文件

src/main/java/com/mongodb/demo/document/Book.java

package com.mongodb.demo.document;

import java.util.Date;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection="book")
public class Book
{
    @Id
    private String id;
    private Integer price;
    private String name;
    private String info;
    private String publish;
    public String getPublish() {
        return publish;
    }
    public void setPublish(String publish) {
        this.publish = publish;
    }
    private Date createTime;
    private Date updateTime;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public Integer getPrice() {
        return price;
    }
    public void setPrice(Integer price) {
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getInfo() {
        return info;
    }
    public void setInfo(String info) {
        this.info = info;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    
}

2.编写控制器

src/main/java/com/mongodb/demo/controller/MongoDbController.java

package com.mongodb.demo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.mongodb.demo.document.Book;
import com.mongodb.demo.service.MongoDbService;

@RestController
public class MongoDbController
{
    @Autowired
    private MongoDbService mongoDbService;
    
    @PostMapping("/mongo/save")
    public String saveObj(@RequestBody Book book)
    {
        return mongoDbService.saveObj(book);
    }
    
    @GetMapping("/mongo/findAll")
    public List<Book> findAll()
    {
        return mongoDbService.findAll();
    }
    
    @GetMapping("/mongo/findOne")
    public Book findOne(@RequestParam String id)
    {
        return mongoDbService.getBookById(id);
    }
    
    @GetMapping("/mongo/findOneByName")
    public Book findOneByName(@RequestParam String name)
    {
        return mongoDbService.getBookByName(name);
    }
    
    @PostMapping("/mongo/update")
    public String update(@RequestBody Book book)
    {
        return mongoDbService.updateBook(book);
    }
    
    @PostMapping("/mongo/delOne")
    public String delOne(@RequestBody Book book)
    {
        return mongoDbService.deleteBook(book);
    }
    
    
    @GetMapping("/mongo/delById")
    public String delById(@RequestParam String id)
    {
        return mongoDbService.deleteBookById(id);
    }
    
    
    @GetMapping("/mongo/findlikes")
    public List<Book> findByLikes(@RequestParam String search) {
        return mongoDbService.findByLikes(search);
    }

}

3.编写服务层

src/main/java/com/mongodb/demo/service/MongoDbService.java

package com.mongodb.demo.service;

import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 com.mongodb.demo.document.Book;


@Service
public class MongoDbService
{
    

    private static final Logger logger = LoggerFactory.getLogger(MongoDbService.class);
    
    @Autowired
    private MongoTemplate mongoTemplate;
    
    /**
     * 保存对象
     * @param book
     * @return
     */
    public String saveObj(Book book)
    {
        book.setCreateTime(new Date());
        book.setUpdateTime(new Date());
        mongoTemplate.save(book);
        return "save success";
    }
    
    /**
     * 查询所有
     * turn
     */
    public List<Book> findAll()
    {
        return mongoTemplate.findAll(Book.class);
    }
    
    public Book getBookById(String id)
    {
        Query query = new Query(Criteria.where("_id").is(id));
        return mongoTemplate.findOne(query,Book.class);
    }
    
    public Book getBookByName(String name)
    {
        Query query = new Query(Criteria.where("name").is(name));
        return mongoTemplate.findOne(query, Book.class);
    }
    
    public String updateBook(Book book)
    {
        Query query = new Query(Criteria.where("_id").is(book.getId()));
        Update update = new Update().set("publish",book.getPublish()).set("info",book.getInfo()).set("updateTime", new Date());
        // 更新第一条并返回第一条
        mongoTemplate.updateFirst(query, update, Book.class);
        //更新w全部并返回全部
        // mongoTemplate.updateMulti(query,update,Book.class);
        // 更新对像,不存在,则不添加        
        // mongoTemplate.upsert(query, update, Book.class);
        return "success-update";
    }
    
    public String deleteBook(Book book)
    {
        mongoTemplate.remove(book);
        return "success";
    }
    
    public String deleteBookById(String id)
    {
        Book book = getBookById(id);
        deleteBook(book);
        return "success-delete";
    }
    
    public List<Book> findByLikes(String search)
    {
        Query query = new Query();
        Criteria criteria = new Criteria();
        Pattern pattern = Pattern.compile("^.*"+search+".*$",Pattern.CASE_INSENSITIVE);
        criteria.where("name").regex(pattern);
        List<Book> lists = mongoTemplate.findAllAndRemove(query, Book.class);
        return lists;
    }
}

 

posted @ 2020-03-05 15:34  好记性还真不如烂笔头  阅读(1038)  评论(0编辑  收藏  举报