配置
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
application.properties
# 配置数据库连接
#格式: mongodb://账号:密码@ip:端口/数据库?认证数据库
#spring.data.mongodb.uri=mongodb://root:admin@localhost/mongodemo?authSource=admin
spring.data.mongodb.uri=mongodb://localhost/mongodb_demo
# 配置MongoTemplate的执行日志
logging.level.org.springframework.data.mongodb.core=debug
实体类规范
- 主要用@Document和@id 与MongoDB绑定
- MongoDB的id都是默认String类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121201502654.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0VEVDc3Nw==,size_16,color_FFFFFF,t_70)
repository
- 必须继承MongoRepository,参数一:操作实体对象,参数二:操作实体对象主键类型
- 遵循了JPA规范,但是有些复杂的情况不好操作
- 那就可以使用注入
private MongoTemplate mongoTemplate;
对象进行复杂的crud操作
public interface UserRepository extends MongoRepository<User,String> {
User findByName(String name);
}
repository持久层API的JPA命名规范图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121201349293.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0VEVDc3Nw==,size_16,color_FFFFFF,t_70)
业务层CRUD
- 注入了持久层repository
- 新增和修改方法都是调用了持久层的save方法,通过判断对象是否有id来决定是新增操作还是修改操作
- 查询方法get,的操作有点骚,记住就好
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121201706293.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0VEVDc3Nw==,size_16,color_FFFFFF,t_70)
演示
- 首先注入了业务层
private IUserService userService;
- 也注入
private MongoTemplate mongoTemplate;
带条件的查询
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121202331811.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0VEVDc3Nw==,size_16,color_FFFFFF,t_70)
分页查询
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012120240554.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0VEVDc3Nw==,size_16,color_FFFFFF,t_70)
or查询
- 查询所有name为xiaofei或者age<30文档
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121202504815.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0VEVDc3Nw==,size_16,color_FFFFFF,t_70)
and查询
- 查询所有name为fei并且28<=age<=32的文档
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121202606384.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0VEVDc3Nw==,size_16,color_FFFFFF,t_70)