本篇博文主要讲述入使用springboot对MongoDB进行整合

这里我们需要先安装配置MongoDB。在官网下载会比较慢,(反正我是比较慢啦,不知道各位的了)所以我特意提供了一下我下载好的安装包,以及补丁,还有一个可视化工具。地址在下方,有需要的可以前往下载。

如果有不会的安装配置的可参考:MongoDB的安装配置

此处说明一下,因为每个人的电脑环境电脑系统不一致,可能配置可以适当的缩减,就拿我来说,我在公司安装好后需要打补丁才可以使用,但是我在家里自己的电脑上安装就可以直接使用,不需要补丁。请根据实际情况进行安装配置。

准备工作:

  • 安装MongoDB
  • jdk1.8+
  • Maven3.0+
  • idea

创建工程:

我们已经创建了许多次工程了,这里就不在赘述了,如果刚接触的新手朋友可以参考:springboot入门体验

引入相关的依赖,以下是我的完整依赖:

<?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>

    <groupId>com.wujie</groupId>
    <artifactId>springboot-mongodb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot-mongodb</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</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>
    </dependencies>

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


</project>

需要加入spring-boot-starter-data-mongodb依赖。

接下来就是配置数据源:

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/mydb
server:
  port: 80

如果有安全认证的地址应该这样写:mongodb://name:pass@localhost:27017/mydb

不过我个人建议新接触的朋友们最后先不要进行安全认证。

定义一个实体:

public class Student {
    /**
     * id
     */
    @Id
    private String id;
    /**
     * 姓名
     */
    private String name;
    /**
     * 性别
     */
    private String sex;

    public Student(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

新建dao层对数据操作:

写一个接口,继承MongoRepository,这个接口有了基本的CRUD的操作,当不能满足需求的时候,可以进行一些自定的方法,比如查询,findByName根据名字查询,findBySex,根据性别查询,在springboot中,我们只需要定义一个方法即可,springboot已经帮我们实现了。注意的是findByName需要严格的按照存入的MongoDB的字段对应。

public interface StudentRepository extends MongoRepository<Student,String> {
    public Student findByName(String name);
    public List<Student> findBySex(String sex);
}

新建service层:

public interface StudentService {
    public Student add (Student student);
    public UpdateResult update (Student student);
    public void delete(String id);
    public Student findByName(String name);
    public List<Student> findBySex(String sex);
}

新建service层的实现类:

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentRepository studentRepository;
    @Autowired
    private MongoTemplate mongoTemplate;
    @Override
    public Student add(Student student) {
        Student student1 = studentRepository.save(student);
        return student1;
    }

    @Override
    public UpdateResult update(Student student) {
        Query query = new Query();
        Criteria criteria = new Criteria();
        query.addCriteria(Criteria.where("_id").is(student.getId()));
        String collectionsName = "student";
        Update update = new Update();
        update.set("_id",student.getId());
        UpdateResult result = mongoTemplate.updateFirst(query, update, collectionsName);
        return result;
    }

    @Override
    public void delete(String id) {
        studentRepository.deleteById(id);
    }

    @Override
    public Student findByName(String name) {
       return studentRepository.findByName(name);
    }

    @Override
    public List<Student> findBySex(String sex) {
        return studentRepository.findBySex(sex);
    }
}

新建controller:

@RestController
@RequestMapping("student")
public class StudentController {
    @Autowired
    private StudentService studentService;
    @RequestMapping("add")
    public Student add(Student student){
        return  studentService.add(student);
    }
    @RequestMapping("update")
    public UpdateResult update(Student student){
        return studentService.update(student);
    }

    @RequestMapping("findByName")
    public Student findByName(String name){
        return studentService.findByName(name);
    }
    @RequestMapping("findBySex" )
    public List<Student> findBySex(String sex){
        return studentService.findBySex(sex);
    }

    @RequestMapping("delete")
    public String delete(String id){
        studentService.delete(id);
        return "success";
    }


}

此时,所有需要的类都已经完成,我们只需要启动SpringbootMongodbApplication的mian方法即可,访问http://localhost/student/add?name=test1123&sex=男

即可得到如下的结果:

springboot mongodb查询速度慢 springboot整合mongodb查询_MongoDB

以上的接口都已经经过测试。

源码地址:springboot-mongodb

MongoDB:MongoDB最新安装文件,补丁,以及可视化工具