package com.dh.mongodbtest;
import com.dh.mongodbtest.entity.User;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import lombok.val;
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 org.springframework.web.bind.annotation.CrossOrigin;
import java.util.List;
import java.util.regex.Pattern;
/**
* 基于MongoTemplate
*/
@SpringBootTest
class MongodbtestApplicationTests {
@Autowired
private MongoTemplate mongoTemplate;
/*添加数据*/
@Test
public void creat() {
User user = new User();
user.setName("duhao");
user.setEmail("[email protected]");
user.setAge(21);
User insert = mongoTemplate.insert(user);
System.out.println(insert);
}
/*查询所有数据*/
@Test
public void findAll() {
List<User> all = mongoTemplate.findAll(User.class);
System.out.println(all);
}
/*根据ID查询数据*/
@Test
public void findAllId() {
User byId = mongoTemplate.findById("62319170cffc532a09949864", User.class);
System.out.println(byId);
}
/*根据条件查询*/
@Test
public void findNameId() {
final Query query = new Query(Criteria.where("name").is("duhao").and("age").is(20));
final List<User> users = mongoTemplate.find(query, User.class);
System.out.println(users);
}
/*模糊查询*/
@Test
public void findLikeName() {
String name = "d";
String regex = String.format("%s%s%s", "^.*", name, ".*$");
final Pattern compile = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
final Query query = new Query(Criteria.where("name").regex(compile));
final List<User> users = mongoTemplate.find(query, User.class);
System.out.println(users);
}
/*分页查询*/
@Test
public void findPage() {
int pageNo = 1;//当前页
int pageSize = 3;//每页显示记录数
String name = "d";
String regex = String.format("%s%s%s", "^.*", name, ".*$");
final Pattern compile = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
final Query query = new Query(Criteria.where("name").regex(compile));
//查询总记录数
final long count = mongoTemplate.count(query, User.class);
//分页(开始位置,当前页减一×上每页显示记录数) skip跳过
final List<User> users = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);
System.out.println(count);
System.out.println(users);
}
/*实现修改*/
@Test
public void updateUser() {
//根据ID查询
User user = mongoTemplate.findById("62319170cffc532a09949864", User.class);
//设置修改值
user.setName("duhao1");
user.setAge(212);
user.setEmail("[email protected]");
Query query = new Query(Criteria.where("_id").is(user.getId()));
Update update = new Update();
update.set("name", user.getName());
update.set("age", user.getAge());
update.set("email", user.getEmail());
UpdateResult updateResult = mongoTemplate.updateFirst(query, update, User.class);
long modifiedCount = updateResult.getModifiedCount();
System.out.println(modifiedCount);
}
/*实现删除根据ID*/
@Test
public void DelUser() {
final Query query = new Query(Criteria.where("_id").is("62319170cffc532a09949864"));
final DeleteResult remove = mongoTemplate.remove(query, User.class);
final long deletedCount = remove.getDeletedCount();
System.out.println(deletedCount);
}
@Test
void contextLoads() {
}
}