spring boot 2.1学习笔记【十三】SpringBoot 2 集成MongoDB

springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich。
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。springboot系列代码全部上传至GitHub:https://github.com/liubenlong/springboot2_demo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

文章目录

本篇介绍简单的MongoDB的集成

MongoDB服务器版本:4.0.5
springboot:2.1.1

引入pom依赖

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-data-mongodbartifactId>
dependency>

在application.yml中配置mongodb,我没有配置密码等,最简单配置如下:

spring:
  data:
    mongodb:
      uri: mongodb://localhost/test

编写实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class Stu implements Serializable {
    @Id
    private String id;
    private String name;
    private Integer age;
    private String address;
}

直接使用mongoTemplate即可,springboot会自动注入。编写测试类

@RestController
@Slf4j
public class StuController {
    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 插入并查询
     * @return
     */
    @GetMapping("/findAll")
    public List<Stu> findAll() {
        Stu stu = mongoTemplate.save(Stu.builder().age(10).name("李四").build());
        log.info("stu={}", stu);
        return mongoTemplate.findAll(Stu.class);
    }


    /**
     * 修改
     * @param id
     * @param age
     */
    @GetMapping("/update")
    public void update(String id, String age) {
        Query query = new Query(Criteria.where("id").is(id));
        Update update = new Update().set("age", age);
        //更新查询返回结果集的第一条
        UpdateResult updateResult = mongoTemplate.updateFirst(query, update, Stu.class);
        log.info("MatchedCount={}, UpsertedId={}", updateResult.getMatchedCount(), updateResult.getUpsertedId());
    }
}

启动服务执行controller。

还有另外一种更加简单的方式,使用MongoRepository,可以减少代码量,几乎不需要编写dao层:
编写StuRepository:

public interface StuRepository extends MongoRepository<Stu, Long> {
}

晚上StuController, 添加stuRepository的测试:

@RestController
@Slf4j
public class StuController {
    @Autowired
    private MongoTemplate mongoTemplate;
    @Autowired
    private StuRepository stuRepository;

    /**
     * 插入并查询
     * @return
     */
    @GetMapping("/findAll")
    public List<Stu> findAll() {
        Stu stu = mongoTemplate.save(Stu.builder().age(10).name("李四").build());
        log.info("stu={}", stu);
        return mongoTemplate.findAll(Stu.class);
    }

    /**
     * 修改
     * @param id
     * @param age
     */
    @GetMapping("/update")
    public void update(String id, String age) {
        Query query = new Query(Criteria.where("id").is(id));
        Update update = new Update().set("age", age);
        //更新查询返回结果集的第一条
        UpdateResult updateResult = mongoTemplate.updateFirst(query, update, Stu.class);
        log.info("MatchedCount={}, UpsertedId={}", updateResult.getMatchedCount(), updateResult.getUpsertedId());
    }

    /**
     * 测试MongoRepository
     */
    @GetMapping("/testMongoRepository")
    public void testMongoRepository() {
        //insert
        Stu user = stuRepository.save(Stu.builder().age(12).name("张三").build());
        log.info("创建用户成功 : [{}]", user);

        //query
        List<Stu> all = stuRepository.findAll();
        log.info("查询用户 : [{}]", Arrays.toString(all.toArray()));
    }
}

简单集成结束。

springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich。
由于是一系列文章,所以后面的文章可能会使用到前面文章的项目。springboot系列代码全部上传至GitHub:https://github.com/liubenlong/springboot2_demo
本系列环境:Java11;springboot 2.1.1.RELEASE;springcloud Greenwich.RELEASE;MySQL 8.0.5;

你可能感兴趣的:(springboot,spring,boot,2.X/spring,cloud,Greenwich)