1.先导入相关依赖(pom.xml)
主要是spring-boot-starter-parent和spring-boot-starter-data-mongodb
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
2.配置信息(application.properties)
无密码配置
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/your-database-name
有密码配置
spring.data.mongodb.uri=mongodb://username:password@127.0.0.1:27017/your-database-name
3.创建配置信息对应的数据库名再创建集合名
使用Navicat创建集合类似这样:
4.创建实体类(Person.java)
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.Date;
/**
* 使用@Document注解指定集合名称
*/
@Data
@Document(collection="persons")
public class Person implements Serializable {
/**
* 使用@Id注解指定MongoDB中的 _id 主键
*/
@Id
private String id; // id类型为String时能够自动生成不需要传id参数,而为Long时不能自动生成需要传id参数
private String userName;
private String passWord;
private Integer age;
private Date createTime;
}
5.使用Mongo Template 对 MongoDB 进行简单增删改查操作
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/testMongoDB")
public class TestController {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 增
*/
@PostMapping
public BaseResult insert(@RequestBody Person person) {
// 注意:插入的person实体类和集合名不一致时需要有@Document(collection="persons")注解(一致则可以不用注解)
mongoTemplate.insert(person);
return BaseResult.success();
}
/**
* 删
*/
@DeleteMapping("/{id}")
public BaseResult remove(@PathVariable("id") String id) {
// 查询条件
Query query = new Query(Criteria.where("id").is(id));
// 删除方法 Person.class为对应实体类 persons为对应集合名
mongoTemplate.remove(query, Person.class, "persons");
return BaseResult.success();
}
/**
* 改
*/
@PutMapping
public BaseResult update(@RequestBody Person person){
// 查询条件
Query query = new Query(Criteria.where("id").is(person.getId()));
// 更新内容
Update update = new Update().set("age",person.getAge()).set("userName", person.getUserName());
return BaseResult.success(mongoTemplate.updateFirst(query, update, Person.class, "persons"));
}
/**
* 根据id查
*/
@GetMapping("/{id}")
public BaseResult queryById(@PathVariable("id") String id){
// 查询条件
Query query = new Query(Criteria.where("id").is(id));
Person person = mongoTemplate.findOne(query, Person.class, "persons");
return BaseResult.success(person);
}
/**
* 根据条件和分页查
*/
@PostMapping("/query")
public BaseResult query(@RequestBody PersonVo personVo){
// 查询条件
Query query = new Query(Criteria.where("age").is(personVo.getAge()).and("userName").is(personVo.getUserName()));
// 分页参数(pageNum从0开始)
Pageable pageable = PageRequest.of(personVo.getPageNum(), personVo.getPageSize());
// 分页查询结果
List<Person> personList = mongoTemplate.find(query.with(pageable), Person.class);
return BaseResult.success(personList);
}
}