SpringBoot集成MongoDB学习
Spring Boot Starters介绍
Spring Boot Starters是由Spring官方封装的一系列操作模块,包括操作Redis、MongoDb和Elasticsearch等Starter。使用SpringBoot Start能够简化项目搭建过程,省去了许多繁琐的配置,提升了开发效率,充分体现出了约定大于配置的优点。
- ps:spring-boot-starter-xxx是由Spring官方提供的。如:spring-boot-starter-mongo。而xxx-spring-boot-starter则是由第三方提供的。如:mybatis-plus-boot-starter。
一、引入依赖
在项目pom.xml中引入如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>3.2.3</version>
</dependency>
二、配置MongoDB数据库信息
在项目application.yml中添加如下配置:
spring:
data:
mongodb:
host: 192.168.220.136
port: 27017
database: testdb
authentication-database: admin
username: dev
password: abc123
三、创建实体类
创建实体类如下:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document("user") //表名
public class User{
@Id //主键
private ObjectId id;
@Indexed //索引字段
private String name;
private Integer age;
private String sex;
}
四、操作示例
在service中注入MongoTemlate对象:
@Service
public class UserService{
//引入MongoTemplate
@Resource
private MongoTemplate mongoTemplate;
// 创建user集合方法
public Boolean createCollection() {
// 集合名称
String name = "user";
// 创建集合
mongoTemplate.createCollection(name);
// 返回创建结果
return mongoTemplate.collectionExists(collectionName);
}
// 新增
public void savetUser(User user) {
return mongoTemplate.save(user);
}
//删除
public void deleteByName(String name) {
Query query = Query.query(Criteria.where("name").is(name));
return mongoTemplate.findAndRemove(query, User.class, "user")
}
//修改
public void updateUser(User user) {
//查询条件
Query query = Query.query(Criteria.where("_id").is(user.getId()));
// 设置修改值
Update update = new Update();
update.set("name", user.getName())
return mongoTemplate.updateFirst(query, update, User.class);
}
//查询
public User queryUserByName(String name) {
//查询条件
Query query = Query.query(Criteria.where("name").is(user.getName()));
return mongoTemplate.findOne(query, User.class);
}
}
测试:
@SpringBootTest
class UserServiceTest{
@Resource
UserService userService;
@Test void testSaveUser(){
User user = User.builder()
.id(ObjectId.get())
.name("xiaoming")
.age(23).build();
this.userService.saveUser(user);
}
@Test
void testUpdateUser(){
User user = User.builder()
.id(new ObjectId(623383c07145e564c4dd7865))
.name("xiaohong")
.age(23).build();
this.userService.updateUser(user);
}
@Test
void testQueryUserByName(){
String name = "xiaohong"
User user = userService.queryUserByName(name);
System.out.println(JSONUtil.toJsonStr(user));
}
@Test
void testUpdateUser(){
User user = User.builder()
.id(new ObjectId(623383c07145e564c4dd7865))
.name("xiaohong")
.age(23).build();
this.userService.updateUser(user);
}
@Test
void testDeleteByNmae(){
String name = "xiaohong"
User user = userService.deleteByName(name);
}
}
更多API访问官方文档:👉API文档