Java中简单使用MongoRepository操作MongoDB
前提:SpringBoot项目
添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
applicatin.properties
spring.data.mongodb.uri=mongodb://192.168.109.139:27017/test
# mongodb://你的主机:你的mongo端口/对应Mongo数据库
实体类
@Data
@Document("User") // 对应数据库表
public class User {
@Id
private String id; // _id字段 由Mongo自动生成
private String name;
private Integer age;
private String email;
private String createDate;
}
定义 Repository接口
public interface UserRepository extends MongoRepository<User,String> {
}
注入UserRespositoty对象
@Autowired
private UserRepository userRepository;
添加或修改
@Test
public void add() {
User user = new User() ;
user.setAge(45);
user.setName("lihua");
user.setEmail("4523@qq.com");
// 如果有id的为修改,无id为添加
User save = userRepository.save(user);
System.out.println(save);
}
查询所有
@Test
void findAll() {
List<User> all = userRepository.findAll();
System.out.println(all);
}
根据Id查询
@Test
void findById() {
// Optional为Java8新特性用于防治空指针异常
Optional<User> userOptional = userRepository.findById("604dbbd87010e778b026ebe2");
System.out.println(userOptional.get());
}
条件查询
@Test
void find() {
User user = new User();
user.setName("lihua");
user.setAge(45);
// 全and
Example<User> example = Example.of(user);
List<User> userList = userRepository.findAll(example);
System.out.println(userList);
}
模糊查询
@Test
void findLike() {
// ExampleMatcher.StringMatcher.CONTAINING 模糊匹配
// withIgnoreCase 忽略大小写
ExampleMatcher matcher = ExampleMatcher.matching()
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
.withIgnoreCase(true);
User user = new User();
user.setName("li");
Example<User> example = Example.of(user,matcher);
List<User> userList = userRepository.findAll(example);
System.out.println(userList);
}
分页查询
@Test
void findPage() {
// 定义排序规则
Sort sort = Sort.by(Sort.Direction.DESC,"age");
// 分页规则(第几页(0开始), 多少个,排序规则)
PageRequest page = PageRequest.of(0, 3, sort);
ExampleMatcher matcher = ExampleMatcher.matching()
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
.withIgnoreCase(true);
User user = new User();
user.setName("li");
Example<User> example = Example.of(user , matcher);
Page<User> userPage = userRepository.findAll(example, page);
System.out.println(userPage.getTotalElements());
System.out.println(userPage.getContent());
}
删除
@Test
void delete() {
userRepository.deleteById("604dbbd87010e778b026ebe2");
}