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控制台
[[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 工程
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控制台进行测试
> 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);
}