MongoDB从入门到实战(九):SpringBoot集成MongoDB(MongoRepository)

x33g5p2x  于2021-12-25 转载在 Go  
字(2.4k)|赞(0)|评价(0)|浏览(548)

一:启动MongoDB服务

  1. # 启动服务,需要指定db路径
  2. > ./bin/mongod --dbpath ./data/db/

二:集成

2.1 pom.xml

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

2.2 application.yml

注意:如果密码单独配需要加单引号

  1. spring:
  2. data:
  3. mongodb:
  4. #uri: mongodb://mongo:123456@localhost:27017/test
  5. host: localhost
  6. port: 27017
  7. database: test
  8. username: mongo
  9. password: '123456'

2.3 entity

  1. @Data
  2. @ToString
  3. @NoArgsConstructor
  4. @AllArgsConstructor
  5. public class Address implements Serializable {
  6. private String province;
  7. private String city;
  8. }
  1. @Data
  2. @NoArgsConstructor
  3. @AllArgsConstructor
  4. public class UserInfo {
  5. private Integer gender;
  6. }
  1. @Data
  2. @ToString
  3. @NoArgsConstructor
  4. @AllArgsConstructor
  5. @Document(collection = "user")
  6. @CompoundIndex( def = "{'id': 1, 'nickname': -1}")
  7. public class User implements Serializable {
  8. @Id
  9. private String id;
  10. @Indexed
  11. @Field("username")
  12. private String username;
  13. private String nickname;
  14. private Integer age;
  15. private Date createTime;
  16. private UserInfo userInfo;
  17. private List<String> tags;
  18. private List<Address> addresses;
  19. }
  • @Document(collection = “user”) : 配置集合名字
  • @CompoundIndex( def = “{‘id’: 1, ‘username’: -1}”) : 复合索引
  • @Id : 主键标识,该属性的值会自动对应mongodb的主键字段"_id",如果该属性名就叫“id”,则该注解可以省略,否则必须写
  • @Field(“字段名”): 该属性对应mongodb的字段的名字,如果一致,则无需该注解
  • @Indexed: 添加了一个单字段的索引

2.4 MongoRepository

  1. public interface UserRepository extends MongoRepository<User, String> {
  2. }

2.5 Test

  1. @SpringBootTest
  2. @RunWith(SpringRunner.class)
  3. class SpringbootMongodbApplicationTests {
  4. @Autowired
  5. private UserRepository userRepository;
  6. @Test
  7. void testMongoDB() {
  8. User user = new User();
  9. user.setId("1");
  10. user.setUsername("monday");
  11. user.setNickname("mengday");
  12. user.setAge(30);
  13. user.setCreateTime(new Date());
  14. user.setUserInfo(new UserInfo(1));
  15. user.setTags(Arrays.asList("xiaojiejie", "dog"));
  16. user.setAddresses(Arrays.asList(
  17. new Address("shanghai", "pudong"),
  18. new Address("beijing", "chaoyang")
  19. ));
  20. userRepository.save(user);
  21. List<User> userList = userRepository.findAll();
  22. System.out.println("userList=" + userList);
  23. User result = userRepository.findById("1").get();
  24. System.out.println(result);
  25. userRepository.deleteById("1");
  26. }
  27. }

Spring Data : Spring 的一个子项目。用于简化数据库访问,支持NoSQL 和 关系数据存储。其主要目标是使数据库的访问变得方便快捷。

  1. 不是随便声明的,而需要符合一定的规范
  2. 查询方法以find | read | get开头
  3. 涉及条件查询时,条件的属性用条件关键字连接
  4. 要注意的是:条件属性首字母需要大写
  5. 支持属性的级联查询,但若当前类有符合条件的属性则优先使用,而不使用级联属性,若需要使用级联属性,则属性之间使用_强制进行连接

相关文章