spring-data-mongodb提供了两种方式访问mongodb。
本章主要介绍“MongoTemplate”的操作
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;
}
单元测试:CURL
package com.atguigu.mongodb;
import com.atguigu.mongodb.entity.User;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
@SpringBootTest
class MongodbApplicationTests {
//注入mongoTemplate
@Autowired
private MongoTemplate mongoTemplate;
//添加
@Test
public void create() {
User user = new User();
user.setAge(25);
user.setName("test");
user.setEmail("1911180056@qq.com");
User user1 = mongoTemplate.insert(user);
System.out.println(user1);
}
//查询所有
@Test
public void findAll() {
List<User> userList = mongoTemplate.findAll(User.class);
System.out.println(userList);
}
//根据id查询
@Test
public void findById() {
User user = mongoTemplate.findById("6077fa9d1152c41296c74548", User.class);
System.out.println(user);
}
//条件查询
@Test
public void findCondition() {
//查询条件
Query query = new Query(Criteria.where("name").is("test").and("age").is(20));
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
//模糊查询
@Test
public void findLikeName(){
//正侧规则
String regex = String.format("%s%s%s", "^.*", "tes", ".*$");
//正则规则封装
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
//模糊查询条件
Query query = new Query(Criteria.where("name").regex(pattern));
//执行模糊查询:查询条件,对象.class
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
//分页查询
@Test
public void findPageSize(){
String regex = String.format("%s%s%s", "^.*", "tes", ".*$");
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("name").regex(pattern));
//执行汇总:查询条件,对象.class
int totalCount = (int) mongoTemplate.count(query, User.class);
//当前页
int page = 1;
//每页条数
int pageSize = 10;
//执行分页:分页条件,对象.class
List<User> userList = mongoTemplate.find(query.skip((page - 1) * pageSize).limit(pageSize), User.class);
Map<String, Object> pageMap = new HashMap<>();
pageMap.put("totalCount",totalCount);
pageMap.put("list", userList);
System.out.println(pageMap);
}
//修改
@Test
public void update() {
//修改条件
Query query = new Query(Criteria.where("_id").is("6077f9cef6642d5869798005"));
//修改对象
Update update = new Update();
update.set("name", "修改");
update.set("age", 20);
update.set("email", "修改邮箱");
//执行修改:查询条件,修改对象,对象
UpdateResult result = mongoTemplate.upsert(query, update, User.class);
//判断修改结果:成为1,失败0
long count = result.getModifiedCount();
System.out.println(count);
}
//删除操作
@Test
public void delete() {
//删除条件
Query query = new Query(Criteria.where("_id").is("6077f9cef6642d5869798005"));
//执行删除
DeleteResult result = mongoTemplate.remove(query, User.class);
//判断删除结果:成为1,失败0
long count = result.getDeletedCount();
System.out.println(count);
}
}