SpringBoot——MongoDB
Maven依赖及配置MongoDB的uri
1 | <dependency> |
1 | mongodb://springbucks:springbucks@localhost:27017/springbucks = |
Spring对MongDB的支持
Spring Data MongoDB
MongoTemple
Repository支持
Spring Data MongoDB的实体类注解
- @Document
- @Id
MongoTemplate
MongoTemplate常用方法
mongoTemplate.findAll(Student.class)
: 查询Student文档的全部数据mongoTemplate.findById(, Student.class)
: 查询Student文档id为id的数据mongoTemplate.find(query, Student.class);
: 根据query内的查询条件查询mongoTemplate.upsert(query, update, Student.class)
: 修改mongoTemplate.remove(query, Student.class)
: 删除mongoTemplate.insert(student)
: 新增
Query对象和Criteria对象
- 创建一个query对象(用来封装所有条件对象),再创建一个criteria对象(用来构建条件)
- 精准条件:Query.query(Criteria.where(
).is( )) - 模糊条件:Query.query(Criteria.and(
).regex( )) - 封装条件:query.addCriteria(criteria)
- 大于(创建新的criteria):Criteria gt = Criteria.where(
).gt( ) - 小于(创建新的criteria):Criteria lt = Criteria.where(
).it( ) - Query.addCriteria(new Criteria().andOperator(gt,lt));
- 一个query中只能有一个andOperator()。其参数也可以是Criteria数组。
- 排序 :query.with(new Sort(Sort.Direction.ASC, “age”). and(new Sort(Sort.Direction.DESC, “date”)))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34//创建
Coffee espresso = Coffee.builder().
name("espresso")
.price(Money.of(CurrencyUnit.of("CNY"), 20.0))
.createTime(new Date())
.updateTime(new Date())
.build();
Coffee saved = mongoTemplate.save(espresso);
log.info("Coffee:{}", saved);
//查找
Query query = new Query();
Criteria where = Criteria.where("name").is("espresso");
query.addCriteria(where);
Coffee coffee = mongoTemplate.findOne(
query, Coffee.class);
//在这里可以写成这种形式
// Coffee coffee1 = mongoTemplate.findOne(
// Query.query(Criteria.where("name").is("espresso")), Coffee.class);
// log.info("Find {} Coffee", list.size());
log.info("FindOne:{}", coffee);
//修改
Thread.sleep(1000);
UpdateResult result = mongoTemplate.updateFirst(Query.query(Criteria.where("name").is("espresso")),
new Update().set("price", Money.ofMajor(CurrencyUnit.of("CNY"), 30))
.currentDate("updateTime"), Coffee.class);
log.info("Update Result:{}", result.getModifiedCount());
Coffee updateOne = mongoTemplate.findById(coffee.getId(), Coffee.class);
log.info("Update Result:{}", updateOne);
//删除
// mongoTemplate.remove(updateOne);Spring Data Mongo的Repository
- @EnableMongoRepositories:在项目的Application入口添加该注解,让应用可以自动识别MongoDB的Repository,Mongo有以下的Repository:这些Repository的操作跟JpaRepository一样
- MongRepository<T, ID>
- PagingAndSortingRepository<T, ID>
- CrudRepository<T, ID>