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;