0%

SpringBoot——MongoDb

SpringBoot——MongoDB

Maven依赖及配置MongoDB的uri

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
1
spring.data.mongodb.uri=mongodb://springbucks:springbucks@localhost:27017/springbucks

Spring对MongDB的支持

  • Spring Data MongoDB

    • MongoTemple

    • Repository支持

Spring Data MongoDB的实体类注解

  • @Document
  • @Id

MongoTemplate

  • MongoTemplate常用方法

    1. mongoTemplate.findAll(Student.class): 查询Student文档的全部数据
    2. mongoTemplate.findById(, Student.class): 查询Student文档id为id的数据
    3. mongoTemplate.find(query, Student.class);: 根据query内的查询条件查询
    4. mongoTemplate.upsert(query, update, Student.class): 修改
    5. mongoTemplate.remove(query, Student.class): 删除
    6. mongoTemplate.insert(student): 新增
  • Query对象和Criteria对象

    1. 创建一个query对象(用来封装所有条件对象),再创建一个criteria对象(用来构建条件)
    2. 精准条件:Query.query(Criteria.where().is())
    3. 模糊条件:Query.query(Criteria.and().regex())
    4. 封装条件:query.addCriteria(criteria)
    5. 大于(创建新的criteria):Criteria gt = Criteria.where().gt(
    6. 小于(创建新的criteria):Criteria lt = Criteria.where().it(
    7. Query.addCriteria(new Criteria().andOperator(gt,lt));
    8. 一个query中只能有一个andOperator()。其参数也可以是Criteria数组。
    9. 排序 :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一样
      1. MongRepository<T, ID>
      2. PagingAndSortingRepository<T, ID>
      3. CrudRepository<T, ID>
-------------本文结束感谢您的阅读-------------