SpringBoot整合MongDB
1.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.填入配置
spring:
data:
mongodb:
database: story
uri: mongodb://127.0.0.1:27017/story?maxpoolsize=10&minpoolsize=1&maxidletimems=600000&maxlifetimems=1800000
3.定义插入数据Entity对象Persion
@Data
public class Person {
private String id;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
4.填写测试代码,在Application中
MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "database");
mongoOps.insert(new Person("Joe", 34));
log.info(mongoOps.findOne(new Query(where("name").is("Joe")), Person.class));
mongoOps.dropCollection("person");
5.实现业务常见需求技术
1.创建操作方法
@Repository
public interface PeopleRepository extends MongoRepository<Person, String> {
Page<Person> findByNameLike(String name, Pageable pageable);
}
@Configuration
public class MongoDBUtil {
@Value("${spring.data.mongodb.database}")
private String dataBaseName;
public @Bean MongoClient mongoClient() {
return MongoClients.create();
}
public @Bean MongoTemplate mongoTemplate() {
return new MongoTemplate(mongoClient(), dataBaseName);
}
}
2.常见业务写法
- 新增
@PostMapping("/insert")
public Result<Boolean> insertPerson(@RequestBody Person person){
log.info("入参:{}",person);
Person insert = mongoRepository.insert(person);
log.info("出参:{}",insert);
return new Result<>(insert.getId()!=null);
}
@PostMapping("/batchInsert")
public Result<Boolean> batchInsertPerson(@RequestBody List<Person> persons){
log.info("入参:{}",persons);
List<Person> list = mongoRepository.saveAll(persons);
log.info("出参:{}",list);
AtomicReference<Boolean> result = new AtomicReference<>(true);
list.forEach(item-> {
if (item == null) {
result.set(false);
}
});
return new Result<>(result.get());
}
- 删除
@PostMapping("/deleteById")
public Result<Boolean> deletePersion(@RequestBody DeleteReq deleteReq){
log.info("入参:{}",deleteReq);
String id = deleteReq.getId();
mongoRepository.deleteById(id);
Optional<Person> byId = mongoRepository.findById(id);
Boolean result = true;
if (byId.isPresent()) {
Person person = byId.get();
if (person != null){
result = false;
}
}
log.info("出参:{} {}",byId,result);
return new Result<>(result);
}
- 查询
@GetMapping("/queryAll")
public List<Person> queryAll(){
return mongoOps.findAll(Person.class);
}
@PostMapping("/queryByPage")
public Page<Person> queryByPage(@RequestBody QueryInfo queryInfo){
log.info("进行分页查询");
PageRequest pageRequest = PageRequest.of(queryInfo.getPage(), queryInfo.getPageSize());
Page<Person> all = mongoRepository.findByNameLike(queryInfo.getName(), pageRequest);
log.info("返回结果",all);
return all;
}
- 更新
@PostMapping("/modify")
public Result<Boolean> modifyPersion(@RequestBody Person person){
log.info("入参:{}",person);
UpdateResult result = mongoOps.updateFirst(query(where("id").is(person.getId())), update("name", person.getName()), Person.class);
log.info("出参:{} {}",result);
return new Result<>(true);
}