MongoDB 安装与SpringBoot项目整合详细教程

MongoDB 安装

  • 安装环境 CenOS6.5
  • MongoDB 4.0.0
MongoDB 下载

步骤:
1.创建MongoDB 文件夹 mkdir MongoDB
2.进入MongoDB 文件夹 cd MongoDB
3.使用wget命令下载MongoDB : wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz
(没有wget命令,先使用yum install wget 安装)

[[email protected] ~]$ mkdir mongodb
[[email protected] ~]$ cd mongodb/
[[email protected] mongodb]$ wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz

下载完成后,将下载的MongoDB解压,并将解压后的文件夹重命名为 mongodb,命令如下:

[[email protected] mongodb]$ tar -zxvf mongodb-linux-x86_64-4.0.0.tgz
[[email protected] mongodb]$ mv mongodb-linux-x86_64-4.0.0 mongodb
MongoDB 配置
  • 进入mongodb目录下,创建两个文件夹db 和 logs,分别用来保存数据和日志,代码如下:
[[email protected] mongodb]$ cd mongodb 
[[email protected] mongodb]$ mkdir db
[[email protected] mongodb]$ mkdir logs

然后,进入bin目录下,创建一个新的MongoDB配置文件 mongo.conf,如下:

  • 进入bin目录
[[email protected] mongodb]$ cd bin/
  • 创建 mongo.conf 并配置
[[email protected] bin]$ vim mongo.conf

内容如下:

dbpath=/home/master/mongodb/mongodb/db
logpath=/home/master/mongodb/mongodb/logs/mongodb.log
port=27017
fork=true

第一行配置刚才创建的db文件夹路径
第二行配置刚才创建的日志文件路径
第三行启动端口
第四行是否以后台形式运行MongoDB

MongoDB 启动和关闭

在bin目录下,运行如下命令启动MongoDB

[[email protected] bin]$ ./mongod -f mongo.conf --bind_ip_all

MongoDB 安装与SpringBoot项目整合详细教程
进入MongoDB控制台

[[email protected] bin]$ ./mongo

输入db.version(),显示MongoDB版本时则启动成功。

> db.version()
4.0.0

默认情况下,启动后连接的是MongoDB的test数据库,而关闭MongoDB的命令需要在admin数据库中进行操作,因此在关闭MongoDB前需要切换到admin数据库,再执行,操作如下:

> use admin;
> db.shutdownServer();
MongoDB 账户设置

默认情况下,启动的MongoDB没有登录密码,为了安全考虑,这里创建一个用户并配置登录密码
用户名为root,密码55555,role表示该用户具有的角色,配置了test数据库的读写权限

> use admin
switched to db admin
> db.createUser({user:"root",pwd:"55555",roles:[{role:"readWrite",db:"test"}]})
Successfully added user: {
	"user" : "root",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "test"
		}
	]
}
> 

用户创建成功后,关闭 MongoDB再重新启动 进入控制台,然后切换到admin数据库验证登录,验证成功就可以对test库进行读写操作了,操作如下:

> use admin
switched to db admin
> db.auth("root","55555");
1
> 

执行结果为1表示认证成功。

整合Spring Boot

1.创建Spring Boot Web 工程

MongoDB 安装与SpringBoot项目整合详细教程
pom.xml添加MongoDB依赖

<!--mongodb 依赖-->
<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>
2.配置 MongoDB

在application.properties 中配置 MongoDB 的连接信息,如下:

spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=test
spring.data.mongodb.host=192.168.18.101
spring.data.mongodb.port=27017
spring.data.mongodb.username=root
spring.data.mongodb.password=55555

第一行配置验证登录信息的库
第二行表示要连接的库
第3~6行是 MongoDB 的链接地址和登录认证信息

3.创建实体类

创建实体类Project ,代码如下

package com.ffish.spring_boot_mongodb.pojo;

/**
 * @Auther: shup
 * @Date: 2019/3/24 23:07
 * @Description: TODO
 */
public class Project {
    private Integer pid;
    private String name;
    private String chargeName;

    public Integer getPid() {
        return pid;
    }

    public void setPid(Integer pid查人) {
        this.pid = pid;
    }

    public String getName() {
        return name;
    }

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

    public String getChargeName() {
        return chargeName;
    }

    public void setChargeName(String chargeName) {
        this.chargeName = chargeName;
    }

    @Override
    public String toString() {
        return "Project{" +
                "pid=" + pid +
                ", name='" + name + '\'' +
                ", chargeName='" + chargeName + '\'' +
                '}';
    }
}

4.创建 ProjectDao
package com.ffish.spring_boot_mongodb.dao;

import com.ffish.spring_boot_mongodb.pojo.Project;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

/**
 * @Auther: shup
 * @Date: 2019/3/24 23:10
 * @Description: TODO
 */
public interface ProjectDao extends MongoRepository<Project,Integer> {
    List<Project> findByChargeNameContains(String chargeName);
    Project findByNameEquals(String name);
}
5.创建 Controller
package com.ffish.spring_boot_mongodb.controller;

import com.ffish.spring_boot_mongodb.dao.ProjectDao;
import com.ffish.spring_boot_mongodb.pojo.Project;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: shup
 * @Date: 2019/3/24 23:13
 * @Description: TODO
 */
@RestController
public class ProjectController {
    @Autowired
    ProjectDao projectDao;

    @GetMapping("/test1")
    public void test1(){
        List<Project> projects = new ArrayList<Project>();
        Project p1 = new Project();
        p1.setPid(1);
        p1.setName("宿舍楼建设");
        p1.setChargeName("小张");
        projects.add(p1);

        Project p2 = new Project();
        p2.setPid(2);
        p2.setName("球场改造");
        p2.setChargeName("小李");
        projects.add(p2);

        projectDao.insert(projects);
        List<Project> projects1 = projectDao.findByChargeNameContains("小张");
        System.out.println(projects1);
        Project project = projectDao.findByNameEquals("球场改造");
        System.out.println(project);
    }
}
6.启动项目测试

浏览器访问 http://localhost:8080/test1
MongoDB 安装与SpringBoot项目整合详细教程
在MongoDB控制台进行测试

> use admin
switched to db admin
> db.auth("root","55555")
1
> use test
switched to db test
> db.project.find()
{ "_id" : ObjectId("5c97a1f5a852095374a14bcc"), "pid" : 1, "name" : "宿舍楼建设", "chargeName" : "小张", "_class" : "com.ffish.spring_boot_mongodb.pojo.Project" }
{ "_id" : ObjectId("5c97a1f5a852095374a14bcd"), "pid" : 2, "name" : "球场改造", "chargeName" : "小李", "_class" : "com.ffish.spring_boot_mongodb.pojo.Project" }
> 

数据已经成功存入test数据库了。

7.使用 MongoTemplate

除了继承MongoRepository 外,Spring Data MongoDB 还提供了MongoTemplate 用来方便地操作 MongoDB
添加下面的代码到上面的Controller:

@Autowired
MongoTemplate mongoTemplate;
@GetMapping("/test2")
public void test2(){
   List<Project> projects = new ArrayList<Project>();
   Project p1 = new Project();
   p1.setPid(3);
   p1.setName("5号教学楼");
   p1.setChargeName("河和");
   projects.add(p1);
   Project p2 = new Project();
   p2.setPid(4);
   p2.setName("3食堂");
   p2.setChargeName("小丫");
   projects.add(p2);
   mongoTemplate.insertAll(projects);
   List<Project> projects1 = mongoTemplate.findAll(Project.class);
   System.out.println(projects1);
   Project project = mongoTemplate.findById(3,Project.class);
   System.out.println(project);
}