一:启动MongoDB服务
# 启动服务,需要指定db路径
> ./bin/mongod --dbpath ./data/db/
二:集成
2.1 pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.2 application.yml
注意:如果密码单独配需要加单引号
spring:
data:
mongodb:
#uri: mongodb://mongo:123456@localhost:27017/test
host: localhost
port: 27017
database: test
username: mongo
password: '123456'
2.3 entity
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Address implements Serializable {
private String province;
private String city;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo {
private Integer gender;
}
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "user")
@CompoundIndex( def = "{'id': 1, 'nickname': -1}")
public class User implements Serializable {
@Id
private String id;
@Indexed
@Field("username")
private String username;
private String nickname;
private Integer age;
private Date createTime;
private UserInfo userInfo;
private List<String> tags;
private List<Address> addresses;
}
- @Document(collection = “user”) : 配置集合名字
- @CompoundIndex( def = “{‘id’: 1, ‘username’: -1}”) : 复合索引
- @Id : 主键标识,该属性的值会自动对应mongodb的主键字段"_id",如果该属性名就叫“id”,则该注解可以省略,否则必须写
- @Field(“字段名”): 该属性对应mongodb的字段的名字,如果一致,则无需该注解
- @Indexed: 添加了一个单字段的索引
2.4 MongoRepository
public interface UserRepository extends MongoRepository<User, String> {
}
2.5 Test
@SpringBootTest
@RunWith(SpringRunner.class)
class SpringbootMongodbApplicationTests {
@Autowired
private UserRepository userRepository;
@Test
void testMongoDB() {
User user = new User();
user.setId("1");
user.setUsername("monday");
user.setNickname("mengday");
user.setAge(30);
user.setCreateTime(new Date());
user.setUserInfo(new UserInfo(1));
user.setTags(Arrays.asList("xiaojiejie", "dog"));
user.setAddresses(Arrays.asList(
new Address("shanghai", "pudong"),
new Address("beijing", "chaoyang")
));
userRepository.save(user);
List<User> userList = userRepository.findAll();
System.out.println("userList=" + userList);
User result = userRepository.findById("1").get();
System.out.println(result);
userRepository.deleteById("1");
}
}
Spring Data : Spring 的一个子项目。用于简化数据库访问,支持NoSQL 和 关系数据存储。其主要目标是使数据库的访问变得方便快捷。
1、 不是随便声明的,而需要符合一定的规范;
2、 查询方法以find|read|get开头;
3、 涉及条件查询时,条件的属性用条件关键字连接;
4、 要注意的是:条件属性首字母需要大写;
5、 支持属性的级联查询,但若当前类有符合条件的属性则优先使用,而不使用级联属性,若需要使用级联属性,则属性之间使用_强制进行连接;
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: