springboot整合mongodb实现简单的增删查改功能

首先我查看下mongodb默认的数据库列表,打开mongodb的安装目录执行mongo.exe

然后执行命令show dbs出现如下图所示

本次学习我们使用test数据库,test数据库有数据时才会显示test

下面我们直接展示项目中的代码以及相关配置

项目目录

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 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.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.neoway</groupId>
    <artifactId>mongodb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mongodb</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</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <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>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
        </dependency>
        <dependency>
          <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
    </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons-core</artifactId>
            <version>1.4.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.45</version>
        </dependency>
    </dependencies>

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

</project>

application.yml配置文件

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

User实体类

package com.neoway.mongodb.bean;

import lombok.Data;

@Data
public class User {
    
    private String id;
    private String name;
    private int age;
}

由于引入了lomokjar包所以使用@Data注解可以省去set、get方法

MongodbController

package com.neoway.mongodb.controller;

import com.neoway.mongodb.bean.User;
import com.neoway.mongodb.dao.MongodbDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping
public class MongodbController {
    @Autowired
    private MongodbDao mongodbDao;

    /**
     * 新增数据
     */
    @GetMapping("/save")
    public void save(){
        User user=new User();
        user.setAge(13);
        user.setId("2");
        user.setName("李四");
        mongodbDao.insert(user);
    }

    /**
     * 查询所有的数据
     */
    @GetMapping("/findAll")
    public void findAll(){
        mongodbDao.getAll();
    }

    /**
     * 根据id查询实体
     */
    @GetMapping("/findOne")
    public void findOne(){
        User user=new User();
        user.setId("1");
        mongodbDao.findOne(user);
    }

    /**
     * 修改
     */
    @GetMapping("/update")
    public void update(){
        User user=new User();
        user.setAge(13);
        user.setId("1");
        user.setName("张三1");
        mongodbDao.update(user);
    }
    
    /**
     * 删除
     */
    @GetMapping("/delete")
    public void delete(){
        User user=new User();
        user.setId("1");
        mongodbDao.delete(user);
    }
}
MongodbDao操作mongodb数据库,我采用的是注入MongoTemplate来操作,刚开始学习时,MongoTemplate注入不进去,最后检查发现是pom.xml文件的依赖没有完全拉下来,
package com.neoway.mongodb.dao;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.neoway.mongodb.bean.User;
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.Component;

import java.util.List;

@Component
public class MongodbDao {
    Logger log= LoggerFactory.getLogger(MongodbDao.class);
    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 添加新的用户
     * @param user
     */
    public void insert(User user){
        mongoTemplate.save(user);
    }

    /**
     * 查询所有的用户
     * @return
     */
    public List<User> getAll(){
        List<User> list=mongoTemplate.findAll(User.class);
        log.info(JSONArray.toJSONString(list));
        return list;
    }

    /**
     * 通过id查询实体
     * @param user
     * @return
     */
    public User findOne(User user){
        Query query=new Query(Criteria.where("id").is(user.getId()));
        User result=mongoTemplate.findOne(query,User.class);
        log.info(JSON.toJSONString(result));
        return result;
    }

    /**
     * 修改用户
     * @param user
     */
    public void update(User user){
        Query query=new Query(Criteria.where("age").is(user.getAge()));
        Update update=new Update().set("name",user.getName());
        //更新查询返回结果集的第一条数据
        //mongoTemplate.updateFirst(query,update,User.class);
        //更新查询返回结果集的所有数据
        mongoTemplate.updateMulti(query,update,User.class);
    }

    /**
     * 删除用户
     * @param user
     */
    public void delete(User user){
        Query query=new Query(Criteria.where("id").is(user.getId()));
        mongoTemplate.remove(query,User.class);
    }
}

通过mongodb的命令find()来查看文档数据

初次学习,有什么不对的地方欢迎大家指出拍砖

猜你喜欢

转载自blog.csdn.net/w651263072/article/details/85628133
今日推荐