这篇我们要说的是springboot整合mongodb,并进行常见的CRUD操作
应用软件
- idea 2022
- mongodb6.x
- mongodb-compass
- windows11
首先我们需要先下载启动mongodb服务
我们可以先用win+R输入cmd打开window命令提示窗,输入net start命令查看正在启动的服务
也可以打开服务列表进行查看。
1.我们需要先引入mongodb的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.配置application.yaml(没有设置mongodb密码的方式)
spring:
data:
mongodb:
uri: mongodb://localhost:27017/user
3.创建user库以及要操作的集合(这里我用的mongodb-compass可视化工具)
4.创建与user集合对应的实体类。
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document("user") //标注该类对应的是mongodb数据库的user集合
public class User {
@Id //指定id
private Integer id;
private String name;
private Integer age;
}
5.MongoTemplate自动装配
private final MongoTemplate mongoTemplate;
@Autowired
public Mongodbdemo02ApplicationTests(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
6.单个插入
/**
* mongodb插入单条数据
*/
@Test
void insertOne() {
User user = new User(1, "coderGAP", 18);
mongoTemplate.save(user);
}
执行结果
7.批量插入
/**
* mongodb批量插入
*/
@Test
void insertMany(){
List<User> userList = new ArrayList<>();
for (int i = 2; i <= 9999; i++) {
userList.add(new User(i,"CoderGAP" + i,18));
}
mongoTemplate.insertAll(userList);
}
执行结果
8.修改
/**
* 修改(将id为1的name值修改为‘我是mongodb数据库’)
*/
@Test
void update(){
mongoTemplate.updateFirst(
Query.query(Criteria.where("_id").is(1)), BasicUpdate.update("name","我是mongodb数据库"),"user");
}
执行结果
9.删除文档
/**
* 删除文档
*/
@Test
void DeleteDocument(){
mongoTemplate.remove(Query.query(Criteria.where("_id").is(1)), "user");
}
10.删除集合
/**
* 删除整个集合
*/
@Test
void DeleteCollection(){
mongoTemplate.dropCollection(User.class);
}
11.单个查看
/**
* 单个查 也就是按照条件查询
*/
@Test
void findOne(){
List<User> userList = mongoTemplate.find(Query.query(Criteria.where("_id").is(1)), User.class);
userList.forEach(System.out::println);
}
执行结果
12.通过ID查询
/**
* 通过Id进行查询
*/
@Test
void findByID(){
User byId = mongoTemplate.findById(2, User.class);
System.out.println(byId);
}
执行结果
13.批量查
/**
* 批量查
*/
@Test
void find(){
List<User> userList = mongoTemplate.findAll(User.class);
userList.forEach(System.out::println);
}
执行结果
14.分页
/**
* mongodb分页
*/
@Test
void page(){
List<User> userList = mongoTemplate.find(
Query.query(Criteria.where("age").is(18)).skip(8).limit(10), User.class);
userList.forEach(System.out::println);
}
执行结果