package com.example.mystudy.domain;
import org.springframework.stereotype.Component;
@Component
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
package com.example.mystudy.Controller;
import com.example.mystudy.domain.Pagemodel;
import com.example.mystudy.domain.StringbootPageable;
import com.example.mystudy.domain.User;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;
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.*;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
@RestController
public class MongodbController {
@Autowired
private MongoTemplate mongoTemplate;
@GetMapping("/getList")
public Object getList(String name){
Pattern pattern = Pattern.compile("^.*"+name+".*$", Pattern.CASE_INSENSITIVE);
Query query = Query.query(Criteria.where("name").regex(pattern));
List<User> userList=mongoTemplate.findAll(User.class);
List<User> userList2=mongoTemplate.find(query,User.class);
return userList2;
}
@PostMapping("/addList")
public Object add(User user){
User newuser=mongoTemplate.insert(user,"user");
List<User> userList=mongoTemplate.findAll(User.class);
return userList;
}
@PutMapping("/update")
public Object update(User user){
Query query =new Query();
query.addCriteria(Criteria.where("age").is(user.getAge()));
Update update =new Update();
update.set("name",user.getName());
UpdateResult updateRequest =mongoTemplate.updateFirst(query,update,"user");
List<User> userList=mongoTemplate.findAll(User.class);
return updateRequest;
}
@DeleteMapping("/delete")
public Object deleteuser(String name){
Query query = new Query();
query.addCriteria(Criteria.where("name").is(name));
DeleteResult deleteResult=mongoTemplate.remove(query,User.class,"user");
List<User> userList=mongoTemplate.findAll(User.class);
return userList;
}
@PostMapping("/getPage")
public Object getPage(){
StringbootPageable stringbootPageable=new StringbootPageable();
Pagemodel pagemodel=new Pagemodel();
Query query=new Query();
List<Order> orders =new ArrayList<Order>();
orders.add(new Order(Sort.Direction.DESC,"age"));
Sort sort=Sort.by(orders);
pagemodel.setPagenumber(1);
pagemodel.setPageSize(5);
pagemodel.setSort(sort);
stringbootPageable.setPagemodel(pagemodel);
Long count=mongoTemplate.count(query,User.class);
List<User> list=mongoTemplate.find(query.with(stringbootPageable),User.class);
Page<User> pagelist=new PageImpl<User>(list,stringbootPageable,count);
return pagelist;
}
}