SpringBoot集成MongoDB(1)|(入门-增删改查功能实现)
章节
第一章链接: SpringBoot集成MongoDB(1)|(入门-增删改查功能实现)
第二章链接: SpringBoot集成MongoDB(2)|(中级-数据统计、集合、管道处理)
前言
本章节主要介绍SpringBoot项目集成MongoDB的一些相关知识,包括集成版本、依赖、集成方式、以及简单的使用。查看需要对Springboot项目有一定的了解。
一、MongoDB是什么?
mongodb和redis一样是一种NoSQL存储介质,存储读取快,但实质上它又是一种介于关系型数据库(如mysql,数据存在磁盘中)和非关系型数据库(如redis,数据存在内存中)的介质,它数据存在磁盘,但读取又借助内存机制映射进行,所以集成了关系型和非关系型的各自优点。它的设计是基于分布式储存的,可用集群部署来分压
二、集成步骤
1.依赖引入
pom依赖如下,主要列出SpringBoot依赖版本以及MongoDB版本,其他需要依赖自行添加
<!-- Springboot 版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.7</version>
<relativePath/>
</parent>
<!-- mongodb 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.文件配置
yml配置,此处为单机配置,集群模式uri
spring:
data:
mongodb:
uri: mongodb://用户名:密码@127,。0.0.1:port/库名?authSource=admin&authMechanism=SCRAM-SHA-1
3.定义数据集(collection)
定义数据库集合,类似于mysql的表,定义好字段,该处用了lombok表达式,如不需要可自定义set、get方法取代
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Document(collection = "m_employe")
public class EmployeeDto {
@Id
private String id;
@Indexed
private String name;
@Indexed
private String no_id;
private EmpInfoPo info;
private String dept;
}
EmpInfoPo 实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class EmpInfoPo {
private int age;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birth;
private int gender;
private String like;
}
4.服务层代码
通过mongoTemplate对象对mongoDb数据库进行操作,mongoTemplate有springboot容器创建管理,用户不需要进行配置,使用的时候注入即可,controller层没有贴入,可自行编写。
@Service
public class EmployeeService {
private static final Logger logger = LoggerFactory.getLogger(EmployeeService.class);
@Autowired
private MongoTemplate mongoTemplate;
public EmployeeDto insertEmployee(EmployeeDto employeeDto) {
return mongoTemplate.insert(employeeDto);
}
public long deleteEmployee(String id) {
Query query = new Query(new Criteria().and("id").is(id));
DeleteResult remove = mongoTemplate.remove(query, EmployeeDto.class);
return remove.getDeletedCount();
}
public long updateEmployee(EmployeeDto employeeDto) {
Query query = new Query(new Criteria().and("name").is(employeeDto.getName()));
Update update = new Update()
.set("dept", employeeDto.getDept())
.set("info.like", employeeDto.getInfo().getLike());
UpdateResult res = mongoTemplate.updateFirst(query, update, EmployeeDto.class);
return res.getMatchedCount();
}
public EmployeeDto getEmployee(String id) {
Query query = new Query(new Criteria().and("id").is(id));
return mongoTemplate.findOne(query, EmployeeDto.class);
}
}
总结
以上就是SpringBoot集成MongoDb数据库内容,内容较简单,适合入门。后期会深入使用MongoDb并总结分享。(如果大家需要源码留言)
第一章链接: SpringBoot集成MongoDB(1)|(入门-增删改查功能实现)
第二章链接: SpringBoot集成MongoDB(2)|(中级-数据统计、集合、管道处理)