本篇博文主要讲述入使用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=男
即可得到如下的结果:
以上的接口都已经经过测试。