准备工作
安装好MongoDB相关环境
启动MongoDB服务
如不熟悉可参考我的上篇文章 MongoDB入门教程
往MongoDB导入测试数据
db.student.save({name:"wesker",sex:"man",age:24,address:"shenzhen"});
导入依赖
<!-- MongoDB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置数据源
Spring Boot 在你导入依赖的时候就会给你配置好默认的数据源了,如果你的MongoDB使用的是默认配置的话就可以不用配置,默认数据源是
spring.data.mongodb.uri=mongodb://localhost:27017/test
配置数据源(无密码)
spring.data.mongodb.uri=mongodb://host:port/database
配置数据源(有密码)
pring.data.mongodb.uri=mongodb://username:password@host:port/database
定义业务实体
/**
* MongoDB 测试Bean
*
* @author MR.ZHANG
* @create 2018-08-14 17:14
*/
@Document(collection="student") //指定collection
public class MongoBean {
private String name;
private Integer age;
private String sex;
private String address;
public MongoBean() {
}
public MongoBean(String name, Integer age, String sex, String address) {
this.name = name;
this.age = age;
this.sex = sex;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "MongoBean{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
}
PS:这里需要注意几点
- 实体字段名与数据库存储的字段名最好保持一致
- @Document(collection="student")这个注解是用来指定对应的collection(在入门教程里有讲解)
创建操作数据库接口Dao
/**
* MongoDB操作数据库接口
*
* @author MR.ZHANG
* @create 2018-08-14 17:22
*/
public interface MongoRep extends MongoRepository<MongoBean,String> {
MongoBean findByAge(int age);
MongoBean findByName(String name);
}
PS:
- 接口类MongoRep继承了MongoRepository并已经为我们封装了基本的CURD操作
-
MongoBean findByAge(int age);
是自定义的查询。自定义查询只要严格按照CURD格式的接口名称并且参数与MongoDB里的字段相对应的话,Spring Boot就能帮我们完成相关操作
测试
测试使用Restful API
@GetMapping("/mongo/get/name/{name}")
@ResponseBody
public MongoBean getDataFromMongoByName(HttpServletResponse response,
@PathVariable(value = "name") String name) {
MongoBean mongoBean = mongoRep.findByName(name);
return mongoBean;
}
结果
{ "address":"shenzhen", "age":24, "name":"wesker", "sex":"man" }