• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SpringBoot集成Mongo

武飞扬头像
流年★似水
帮助1

1.添加依赖

  1.  
    <dependency>
  2.  
    <groupId>org.springframework.boot</groupId>
  3.  
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
  4.  
    </dependency>

2.添加配置

  1.  
    spring:
  2.  
    application:
  3.  
    name: Mongo APP
  4.  
    data:
  5.  
    mongodb:
  6.  
    uri: mongodb://{用户名}:{密码}@{IP}:{PORT}/{数据库名}?authSource={鉴权数据库名}
  7.  
     
  8.  
    未做鉴权时,uri如下:
  9.  
    mongodb://{IP}:{PORT}/{数据库名}

3.基础操作

学新通

  1.  
    package com.watrix.mongo;
  2.  
     
  3.  
    import com.mongodb.client.result.DeleteResult;
  4.  
    import com.mongodb.client.result.UpdateResult;
  5.  
    import com.watrix.mongo.po.User2PO;
  6.  
    import com.watrix.mongo.po.UserPO;
  7.  
    import lombok.extern.slf4j.Slf4j;
  8.  
    import org.bson.BSONObject;
  9.  
    import org.bson.types.ObjectId;
  10.  
    import org.junit.jupiter.api.DisplayName;
  11.  
    import org.junit.jupiter.api.Test;
  12.  
    import org.springframework.beans.factory.annotation.Autowired;
  13.  
    import org.springframework.boot.test.context.SpringBootTest;
  14.  
    import org.springframework.data.mongodb.core.MongoTemplate;
  15.  
    import org.springframework.data.mongodb.core.query.Criteria;
  16.  
    import org.springframework.data.mongodb.core.query.Query;
  17.  
    import org.springframework.data.mongodb.core.query.Update;
  18.  
     
  19.  
    import java.util.List;
  20.  
     
  21.  
    @Slf4j
  22.  
    @SpringBootTest
  23.  
    public class MongoBaseTest {
  24.  
    @Autowired
  25.  
    private MongoTemplate mongoTemplate;
  26.  
     
  27.  
    @Test
  28.  
    @DisplayName("objectId生成")
  29.  
    public void objectIdGenerateTest() {
  30.  
    for (int i = 0; i < 10; i ) {
  31.  
    ObjectId objectId = ObjectId.get();
  32.  
    log.info("xxx>>> " objectId.toString());
  33.  
    }
  34.  
    }
  35.  
     
  36.  
    @Test
  37.  
    @DisplayName("插入一个对象,ID属性为Long,指定ID")
  38.  
    public void insertOneWithId() {
  39.  
    UserPO userPO = new UserPO(1L, "张飞", 24, "丈八蛇矛");
  40.  
    UserPO insertResult = mongoTemplate.insert(userPO);
  41.  
    log.info(insertResult.toString());
  42.  
    }
  43.  
     
  44.  
    @Test
  45.  
    @DisplayName("插入一个对象,ID属性为ObjectId,不指定ID")
  46.  
    public void insertOneNoId() {
  47.  
    User2PO userPO = new User2PO("张飞", 24, "丈八蛇矛");
  48.  
    User2PO insertResult = mongoTemplate.insert(userPO);
  49.  
    log.info(insertResult.toString());
  50.  
    }
  51.  
     
  52.  
    @Test
  53.  
    @DisplayName("查询")
  54.  
    public void queryTest() {
  55.  
    List<User2PO> user2POS = mongoTemplate.find(new Query(), User2PO.class);
  56.  
    log.info(user2POS.toString());
  57.  
    }
  58.  
     
  59.  
    @Test
  60.  
    @DisplayName("修改")
  61.  
    public void queryByCondationTest() {
  62.  
    Query query = new Query();
  63.  
    query.addCriteria(Criteria.where("userName").is("张飞"));
  64.  
    List<User2PO> user2POS = mongoTemplate.find(query, User2PO.class);
  65.  
    log.info("修改前数据:" user2POS.toString());
  66.  
     
  67.  
    Update update = new Update();
  68.  
    // set操作需保证字段已存在
  69.  
    update.set("age", 50)
  70.  
    .set("prop","战士");
  71.  
    UpdateResult updateResult = mongoTemplate.updateMulti(query, update, User2PO.class);
  72.  
    log.info("updateResult: >>> {}",updateResult);
  73.  
    log.info("修改后数据:{}" , mongoTemplate.find(query, User2PO.class));
  74.  
    }
  75.  
     
  76.  
    @Test
  77.  
    @DisplayName("删除")
  78.  
    public void deleteTest() {
  79.  
    Query query = new Query();
  80.  
    query.addCriteria(Criteria.where("userName").is("张飞"));
  81.  
    List<User2PO> user2POS = mongoTemplate.find(query, User2PO.class);
  82.  
    log.info("删除前数据:" user2POS.toString());
  83.  
     
  84.  
    DeleteResult remove = mongoTemplate.remove(query, User2PO.class);
  85.  
    log.info("updateResult: >>> {}",remove);
  86.  
    log.info("删除后数据:{}" , mongoTemplate.find(query, User2PO.class));
  87.  
    }
  88.  
    }
  1.  
    package com.watrix.mongo.po;
  2.  
     
  3.  
    import lombok.AllArgsConstructor;
  4.  
    import lombok.Data;
  5.  
    import lombok.NoArgsConstructor;
  6.  
    import org.bson.types.ObjectId;
  7.  
    import org.springframework.data.annotation.Id;
  8.  
    import org.springframework.data.mongodb.core.mapping.Document;
  9.  
     
  10.  
    @Data
  11.  
    @Document("user2")
  12.  
    @AllArgsConstructor
  13.  
    @NoArgsConstructor
  14.  
    public class User2PO {
  15.  
    @Id
  16.  
    private ObjectId userId;
  17.  
     
  18.  
    private String userName;
  19.  
     
  20.  
    private Integer age;
  21.  
     
  22.  
    private String weapon;
  23.  
     
  24.  
    public User2PO(String userName, int age, String weapon) {
  25.  
    this(null,userName,age,weapon);
  26.  
    }
  27.  
    }
  1.  
    package com.watrix.mongo.po;
  2.  
     
  3.  
    import lombok.AllArgsConstructor;
  4.  
    import lombok.Data;
  5.  
    import lombok.NoArgsConstructor;
  6.  
    import org.springframework.data.annotation.Id;
  7.  
    import org.springframework.data.mongodb.core.mapping.Document;
  8.  
     
  9.  
    @Data
  10.  
    @Document("user")
  11.  
    @AllArgsConstructor
  12.  
    @NoArgsConstructor
  13.  
    public class UserPO {
  14.  
    @Id
  15.  
    private Long userId;
  16.  
     
  17.  
    private String userName;
  18.  
     
  19.  
    private Integer age;
  20.  
     
  21.  
    private String weapon;
  22.  
     
  23.  
    public UserPO(String userName, int age, String weapon) {
  24.  
    this(null,userName,age,weapon);
  25.  
    }
  26.  
    }

4.关于ObjectId

  1.  
    如果通过Mongo生成ID,则使ID属性定义为ObjectId,插入数据时忽略ID。
  2.  
    如果不通过Mongo生成,则自定义ID属性,添加@Feild("_id")注解,插入数据时自行生成ID。

5.复杂查询

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgacafk
系列文章
更多 icon
同类精品
更多 icon
继续加载