SpringBoot 整合 MongoDB

2024-02-20  本文已影响0人  Tinyspot

1. 配置

1.1 依赖包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

1.2 配置文件

spring:
  data:
    mongodb:
      # uri: mongodb://127.0.0.1:27017/concrete  # 未开启安全协议时无需密码
      uri: mongodb://Tinyspot:123456@127.0.0.1:27017/concrete

2. 实战

2.1 查询

@RestController
@RequestMapping("/mongo")
public class MongoController {

    @Resource
    private MongoTemplate mongoTemplate;

    @GetMapping("/findAll")
    public String findAll() {
        List<UserVO> all = mongoTemplate.findAll(UserVO.class);
        return JSON.toJSONString(all);
    }

    @GetMapping("/findUser")
    public String findUser(String name) {
        Query query = new Query(Criteria.where("name").is(name));
        UserVO user = mongoTemplate.findOne(query , UserVO.class);
        return user.toString();
    }
}

2.2 相关注解

@Data
@Document(collection = "user")
public class UserVO implements Serializable {
    private static final long serialVersionUID = 5274857955858412692L;

    private String id;
    private String name;
    private Integer age;
}

@Document 作⽤在类上,指定集合名称
@Id 作⽤在成员变量、⽅法上,映射为⽂档 _id
@Field 作⽤在成员变量、⽅法上,指定在⽂档中 key 的名称,默认为成员变量名

2.3 操作

@PostMapping("/insert")
public String insert(UserVO userVO) {
    UserVO insert = mongoTemplate.insert(userVO);
    return JSON.toJSONString(insert);
}

/**
 * 报错一:java.lang.IllegalStateException: No primary or single unique constructor found for interface java.util.List
 * 接收参数加上:@RequestBody
 */
@PostMapping("/insertBatch")
public String insertBatch(@RequestBody List<UserVO> users) {
    Collection<UserVO> insert = mongoTemplate.insert(users, UserVO.class);
    return JSON.toJSONString(insert);
}

@PostMapping("/updateFirst")
public Long updateFirst(UserVO userVO) {
    // 更新条件
    Query query = new Query(Criteria.where("id").is(userVO.getId()));

    // 更新值
    Update update = new Update()
            .set("name", userVO.getName())
            .set("age", userVO.getAge());

    // 更新查询满足条件的文档数据(第一条)
    UpdateResult result = mongoTemplate.updateFirst(query, update, UserVO.class);
    return result.getMatchedCount();
}

@GetMapping("/deleteById")
public Long deleteUserById(String id) {
    Query query = new Query(Criteria.where("_id").is(id));
    DeleteResult result = mongoTemplate.remove(query, UserVO.class);
    return result.getDeletedCount();
}

@GetMapping("/deleteByName")
public Long deleteByName(String name) {
    Query query = new Query(Criteria.where("name").is(name));
    DeleteResult result = mongoTemplate.remove(query, UserVO.class);
    return result.getDeletedCount();
}
上一篇下一篇

猜你喜欢

热点阅读