本篇既然是学习如何集成MongoDB,那必然要先安装MongoDB,这是毋庸置疑的。安装好之后,我们直接开始“干”。
一、添加MongoDB依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
二、数据源配置
格式如下:
# 设置了用户名和密码
spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/dbname
# 没有设置密码,可不配置
spring.data.mongodb.uri=mongodb://localhost:27017/dbname
三、编码
准备工作,相关配置都好了之后,我们动手写一个简单的测试例子。
3.1、写一个Entity
import org.springframework.data.annotation.Id;
/**
* @author Administrator
*
*/
public class MongoDB {
@Id
private String id;
private String name;
private String code;
// 省略getter和setter
@Override
public String toString() {
return name + "[" + code + "]";
}
}
3.2、定义一个业务层接口
public interface MongoDBService {
List<MongoDB> findAll();
MongoDB findById(String id);
String save(MongoDB entity) throws Exception;
MongoDB findByCode(String code);
}
3.3、业务层接口实现
@Service
public class MongoDBServiceImpl implements MongoDBService {
@Autowired
private MongoDBRepository repository;
@Override
public List<MongoDB> findAll() {
return repository.findAll();
}
@Override
public MongoDB findById(String id) {
Optional<MongoDB> optional = repository.findById(id);
if (optional.isPresent()) {
return optional.get();
}
return null;
}
@Override
public String save(MongoDB entity) throws Exception {
MongoDB result = repository.save(entity);
return result.getId();
}
@Override
public MongoDB findByCode(String code) {
return repository.findByCode(code);
}
}
3.4、定义一个Controller
@RestController
@RequestMapping("/mongodb/*")
public class MongoDBController {
@Autowired
private MongoDBService mongoDBService;
@GetMapping(value = "findAll")
public List<MongoDB> findAll() {
return mongoDBService.findAll();
}
@GetMapping(value = "{id}")
public MongoDB findById(@PathVariable("id") String id) {
return mongoDBService.findById(id);
}
@PostMapping(value = "save")
public String save(@RequestBody MongoDB entity) throws Exception {
return mongoDBService.save(entity);
}
@GetMapping(value = "byCode/{code}")
public MongoDB findByCode(@PathVariable("code") String code) {
return mongoDBService.findByCode(code);
}
}
四、测试
4.1、数据库的创建
当然这个是不用我们手动创建数据库的,当启动springboot时,会自动帮我们创建springboot_project数据库,并创建一个对应到MongoDB实体的“表”(在MongoDB的世界里,我们称之为集合)mongoDB,如下:
4.2、save接口测试
我们查询mongoDB集合,看是否存在刚刚保存的一条文档(MongoDB中的术语)。