spring-data-mongodb提供了两种方式访问mongodb。
本章主要介绍“MongoRepository”的操作
pom.xml
<!--mongodb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
application.properties
#连接mongodb数据库
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/test
实体类
package com.atguigu.mongodb.entity;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@Document("User")//对象关系映射(mongodb的集合)
public class User {
@Id
private String id;
private String name;
private Integer age;
private String email;
private String createDate;
}
MongoRepository
package com.atguigu.mongodb.config;
import com.atguigu.mongodb.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends MongoRepository<User,String> {
}
单元测试:CURL
package com.atguigu.mongodb;
import com.atguigu.mongodb.config.UserRepository;
import com.atguigu.mongodb.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.*;
import java.util.List;
@SpringBootTest
class MongodbApplicationTests {
//注入userRepository
@Autowired
private UserRepository userRepository;
//添加
@Test
public void create() {
User user =new User();
user.setAge(25);
user.setName("mary");
user.setEmail("123@136.com");
User user1 =userRepository.save(user);
System.out.println(user1);
}
//查询所有
@Test
public void findAll() {
List<User> userList = userRepository.findAll();
System.out.println(userList);
}
//根据id查询
@Test
public void findById() {
//Optional<User> byId = userRepository.findById("6078f7d18b260e166426e4de");
User byId = userRepository.findById("6078f7d18b260e166426e4de").get();
System.out.println(byId);
}
//条件查询
@Test
public void findCondition() {
User user =new User();
user.setAge(25);
user.setName("mary");
user.setEmail("123@136.com");
//查询条件
Example<User> userExample =Example.of(user);
List<User> userList = userRepository.findAll(userExample);
System.out.println(userList);
}
//模糊查询
@Test
public void findLikeName(){
//创建匹配器,即如何使用查询条件 //改变默认字符串匹配方式:模糊查询 //改变默认大小写忽略方式:忽略大小写
ExampleMatcher matcher = ExampleMatcher.matching().withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING).withIgnoreCase(true);
User user = new User();
user.setName("m");
//模糊查询条件
Example<User> userExample = Example.of(user, matcher);
List<User> userList = userRepository.findAll(userExample);
System.out.println(userList);
}
//分页查询
@Test
public void findPageSize(){
//分页参数
Pageable pageable = PageRequest.of(0,1);
User user =new User();
user.setName("mary");
Example<User> example = Example.of(user);
Page<User> all = userRepository.findAll(example,pageable);
System.out.println();
}
//修改
@Test
public void update() {
User user = userRepository.findById("6078f7d18b260e166426e4de").get();
user.setEmail("456@136.com");
//添加和修改用的是一个方法: 如何区分执行那个操作,是根据id是否存在
User save = userRepository.save(user);
System.out.println(save);
}
//删除操作
@Test
public void delete() {
userRepository.deleteById("6078f7d18b260e166426e4de");
}
}