SpringBoot整合mongoDB
首先你得安装并启动mongoDB服务,如何操作请自行百度。
准备工作完成之后,直接新建一个SpringBoot项目,配置文件以及依赖如下:
配置文件:application.yml
server:
port: 8888
spring:
data:
mongodb:
database: mongoTest
#username:
#password:
host: localhost
port: 27017
很简单,几乎不需要配置什么,如果没有设置密码的,请在配置文件注释掉username和password,否则可能会报错,连接mongo服务异常无权限。
接下来是配置文件,由于本人懒,所以集成了 lombok和 Swagger2 :
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.study</groupId>
<artifactId>mongo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mongo</name>
<description>Demo project for Spring Boot</description>
<properties>
<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>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
<!--Swagger-UI API文档生产工具-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
ok,接下来引入 MongoTemplate 直接进行CRUD操作,代码如下:
package com.study.mongo.service.impl;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.study.mongo.bean.MongoTestBean;
import com.study.mongo.service.MongoTestBeanService;
import org.springframework.beans.factory.annotation.Autowired;
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.stereotype.Service;
import java.util.Date;
/**
* @author czj
* @date 2019/6/14 5:57 PM
*/
@Service
public class MongoTestBeanServiceImpl implements MongoTestBeanService {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public MongoTestBean save(MongoTestBean bean) {
return mongoTemplate.save(bean);
}
@Override
public MongoTestBean save(MongoTestBean bean, String collectionName) {
return mongoTemplate.save(bean, "testCollection");
}
@Override
public long update(MongoTestBean bean) {
Query query = new Query(Criteria.where("id").is(bean.getId()));
Update update = new Update();
update.set("name", bean.getName()).set("homeAddress", bean.getHomeAddress()).set("modifyTime", new Date());
//更新查询返回的第一条结果
UpdateResult result = mongoTemplate.updateFirst(query, update, MongoTestBean.class);
return result.getMatchedCount();
//更新查询返回的所有结果集
//mongoTemplate.updateMulti(query, update, MongoTestBean.class);
}
@Override
public long delete(Integer id) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
DeleteResult result = mongoTemplate.remove(query, MongoTestBean.class);
return result.getDeletedCount();
}
@Override
public MongoTestBean query(Integer id) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
return mongoTemplate.findOne(query, MongoTestBean.class);
}
}
controller层代码我就不贴了,算了,还是贴一下吧:
package com.study.mongo.controller;
import com.study.mongo.bean.MongoTestBean;
import com.study.mongo.service.MongoTestBeanService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author czj
* @date 2019/6/14 6:01 PM
*/
@Api(tags = "MongoTestController", description = "mongo测试")
@RestController
@RequestMapping("mongoTest")
public class MongoTestController {
@Autowired
private MongoTestBeanService mongoTestService;
@ApiOperation("根据id查询")
@GetMapping("get")
public MongoTestBean getOne(Integer id) {
return mongoTestService.query(id);
}
@ApiOperation("根据id删除")
@DeleteMapping("delete")
public long deleteOne(Integer id) {
return mongoTestService.delete(id);
}
@ApiOperation("更新操作")
@PostMapping("update")
public long updateOne(MongoTestBean bean) {
return mongoTestService.update(bean);
}
@ApiOperation("新增对象")
@PostMapping("/save")
public MongoTestBean saveOne(MongoTestBean bean) {
return mongoTestService.save(bean);
}
}
简单说明一下:MongoTemplate 的 save方法,可以指定 collectionName ,就是指定存储到哪张表(姑且叫表吧,其实就是文档,相当于mysql的表)。其他还有很多API我没有一一尝试,就不多妄加揣测了,希望大家能够积极去探索。
SpringBoot整合mondoDB写个CRUD很简单,就这样吧~