SpringBoot整合MongoDB
SpringBoot整合MongoDB
Spring-data对mongodb做了支持,使用spring-data-mongodb可以简化mongodb的操作,通过内部提供的MongoTemplate对象方便的进行数据的CRUD 。
入门案例
通过SpringData-mongo完成数据CRUD 。
-
创建工程,导入依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.9.RELEASE</version> </parent> <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-test</artifactId> <scope>test</scope> </dependency> </dependencies>
-
添加mongodb的配置信息
# 配置mongo的连接地址 spring: data: mongodb: uri: mongodb://192.168.136.160:27017/testdb
-
编写实体类,并通过注解配置映射对应的tb_person:
// 指定实体类和mongo集合的映射关系, tb_person是mongodb中的一个collection @Document("tb_person") public class Person { @Id private ObjectId id; @Field("myname") private String name; private Integer age; private String address; }
-
通过注入MongoTemplate进行数据操作
@RunWith(SpringRunner.class)
@SpringBootTest
public class MongoTest {
/**
* 1. 注入MongoTemplate对象
* 2. 调用其方法完成数据的CRUD
*/
@Autowired
private MongoTemplate mongoTemplate;
// 保存
@Test
public void testSave(){
Person person = new Person();
person.setName("李四");
person.setAge(19);
person.setAddress("北京金燕龙");
mongoTemplate.save(person);
}
// 查询
@Test
public void testFindAll() {
List<Person> list = mongoTemplate.findAll(Person.class);
for (Person person : list) {
System.out.println(person);
}
}
// 条件查询
@Test
public void testFind(){
// 1. 创建Criteria对象,并设置查询条件
Criteria criteria = Criteria.where("myname").is("张三")
.and("age").is(18); // is 相当于sql语句中的=
// 2. 根据Criteria创建Query对象
Query query = Query.query(criteria);
// 3. 查询
List<Person> list = mongoTemplate.find(query, Person.class);// Query对象,实体类对象
for (Person person : list) {
System.out.println(person);
}
}
// 分页查询
@Test
public void testFindPage(){
int page = 1;
int size = 2;
// 1. 创建Criteria对象,并设置查询条件
Criteria criteria = Criteria.where("age").lt(50);
// 2. 根据Criteria创建Query对象
Query query = Query.query(criteria)
.skip((page - 1) * size) // 从第几条开始查询
.limit(size) // 每页查询条数
.with(Sort.by(Sort.Order.desc("age"))); // 设置排序
// 3. 查询
List<Person> list = mongoTemplate.find(query, Person.class);// Query对象,实体类对象
for (Person person : list) {
System.out.println(person);
}
}
// 更新
@Test
public void testUpdate() {
// 1. 构建Query对象
Query query = Query.query(Criteria.where("id").is("608651a9adf0f043d9a303d7"));
// 2. 设置需要更新的数据内容
Update up = new Update();
up.set("age", 10);
up.set("myname", "lisi");
// 3. 调用方法
mongoTemplate.updateFirst(query, up, Person.class);
}
// 删除
@Test
public void testDelete() {
// 1. 构建Query对象
Query query = Query.query(Criteria.where("id").is("608651a9adf0f043d9a303d7"));
// 2. 调用方法
mongoTemplate.remove(query, Person.class);
}
}