MongoDB在windows上安装的时候,左下角的勾选不要勾,会卡很久。。
pom.xml
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-devtools
true
org.springframework.boot
spring-boot-starter-data-mongodb
com.alibaba
fastjson
1.2.41
application.properties :
spring.data.mongodb.uri=mongodb://localhost:27017/db
新建 user.java
package com.example.demo.bean;
import org.springframework.data.annotation.Id;
/**
* @Date 2020/8/7 17:03
* @Created by wbb
* @Used for
*/
public class user {
@Id
private String id;
private String name;
private String gender;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
控制层依赖注入
@Resource
private MongoTemplate mongoTemplate;
新增:
@RequestMapping("/insert")
public String insert(){
user u=new user();
u.setId("789");
u.setName("wbb");
u.setGender("男");
mongoTemplate.insert(u);
return "/test/test";
}
批量插入:
@RequestMapping("/insertAll")
public String insertAll(){
List newList=new ArrayList<>();
for(int i=0;i<30;i++){
user u=new user();
u.setId(UUID.randomUUID().toString());
u.setName("wbb");
u.setGender("男");
newList.add(u);
}
mongoTemplate.insertAll(newList);
return "/test/test";
}
查询 返回一条数据:
@RequestMapping("/findone")
public String findone(){
Query query=new Query(Criteria.where("id").is("123"));
user u=mongoTemplate.findOne(query,user.class);
System.out.println(JSON.toJSONString(u));
return "/test/test";
}
查询返回多条数据:
@RequestMapping("/findAll")
public String findAll(){
Query query=new Query(Criteria.where("name").is("王冰冰"));
List u=mongoTemplate.find(query,user.class);
System.out.println(JSON.toJSONString(u));
return "/test/test";
}
修改:
@RequestMapping("/update")
public String update(){
Query query=new Query(Criteria.where("id").is("123"));
Update update= new Update().set("name", "东北吴彦祖").set("gender","老男人");
//更新查询返回结果集的第一条
mongoTemplate.updateFirst(query,update,user.class);
//更新查询返回结果集的所有
// mongoTemplate.updateMulti(query,update,TestEntity.class);
return "/test/test";
}
删除:
@RequestMapping("/delete")
public String delete(){
Query query=new Query(Criteria.where("id").is("123"));
mongoTemplate.remove(query,user.class);
return "/test/test";
}
分页查询 :
@RequestMapping("/findPage")
public String findPage(){
//利用工具类拼装分页信息
SpringbootMongoDBPageable pageable = new SpringbootMongoDBPageable();
MongoDBPageModel pm=new MongoDBPageModel();
pm.setPagesize(3); // 每页 3条
pm.setPagenumber(2); // 第 2 页
List orders = new ArrayList<>(); //排序信息
orders.add(new Sort.Order(Sort.Direction.DESC, "id"));// 按照 id 倒序排列
pm.setSort(Sort.by(orders));
pageable.setPage(pm);
//拼装查询信息
Query query = new Query();
Criteria criteria = new Criteria();
query.addCriteria(criteria.where("name").is("wbb")); // 条件 name= wbb
//查询总记录数
List list = mongoTemplate.find(query.with(pageable), user.class);
System.out.println(JSON.toJSONString(list));
return "/test/test";
}
分页需要的工具类:
参考地址: https://blog.csdn.net/weixin_39804646/article/details/82155898#commentBox
import org.springframework.data.domain.Sort;
import java.io.Serializable;
/**
* @Auther:
* @Date: 2018/8/22 08:48
* @Description:
* @Version: 1.0
*/
public class MongoDBPageModel implements Serializable {
/**
* @Fields: serialVersionUID
* @Todo: TODO
*/
private static final long serialVersionUID = 1L;
// 当前页
private Integer pagenumber = 1;
// 当前页面条数
private Integer pagesize = 10;
// 排序条件
private Sort sort;
public Integer getPagenumber() {
return pagenumber;
}
public void setPagenumber(Integer pagenumber) {
this.pagenumber = pagenumber;
}
public Integer getPagesize() {
return pagesize;
}
public void setPagesize(Integer pagesize) {
this.pagesize = pagesize;
}
public Sort getSort() {
return sort;
}
public void setSort(Sort sort) {
this.sort = sort;
}
}
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import java.io.Serializable;
/**
* @Auther:
* @Date: 2018/8/22 10:19
* @Description:
* @Version: 1.0
*/
public class SpringbootMongoDBPageable implements Serializable,Pageable{
/**
* @Fields: serialVersionUID
* @Todo: TODO
*/
private static final long serialVersionUID = 1L;
MongoDBPageModel page;
public MongoDBPageModel getPage() {
return page;
}
public void setPage(MongoDBPageModel page) {
this.page = page;
}
@Override
public Pageable first() {
// TODO Auto-generated method stub
return null;
}
@Override
public long getOffset() {
// TODO Auto-generated method stub
return (page.getPagenumber() - 1) * page.getPagesize();
}
@Override
public int getPageNumber() {
// TODO Auto-generated method stub
return page.getPagenumber();
}
@Override
public int getPageSize() {
// TODO Auto-generated method stub
return page.getPagesize();
}
@Override
public boolean hasPrevious() {
// TODO Auto-generated method stub
return false;
}
@Override
public Pageable next() {
// TODO Auto-generated method stub
return null;
}
@Override
public Pageable previousOrFirst() {
// TODO Auto-generated method stub
return null;
}
@Override
public Sort getSort() {
// TODO Auto-generated method stub
return page.getSort();
}
}