栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合MongoDB快速入门+MongoDB分页

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合MongoDB快速入门+MongoDB分页

SpringBoot整合MongoDB快速入门 1、导入依赖
        
        
            org.springframework.boot
            spring-boot-starter-data-mongodb
        
		
		
            org.projectlombok
            lombok
            true
        
2、新建实体类

注:

1、使用了lombock

2、@document(collection = “letters”)

3、@Id :

@Id
private String id; //对应主键 _id

collection=“letters” 表示你要存入到MongoDB 的那个集合中:这里就是指letters集合

@document(collection = "letters")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Letter {
    @Id
    private String id;
    private Integer userid;
    private String nickname;
    private String title;
    private String content;
    private String ctime;
    private String stime;
}
3、编写Service

package cn.xhubbq.service.letter;
import cn.xhubbq.pojo.letter.Letter;
import com.mongodb.client.result.DeleteResult;
import java.util.List;


public interface ILetterService {
    //写信
    Letter addLetter(Letter letter);
    //删除
    DeleteResult deleteLetterById(String id);
    //查询所有
    List selectAllLetters();
    //分页查询
    List selectLettersByPage(int curPage,int pageSize);
    //查总数
    long letterCount();

}
package cn.xhubbq.service.letter;
import cn.xhubbq.pojo.letter.Letter;
import com.mongodb.client.result.DeleteResult;
import org.springframework.beans.factory.annotation.Autowired;
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.stereotype.Service;
import java.util.List;


@Service
public class LetterServiceImpl implements ILetterService{
    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public Letter addLetter(Letter letter) {
        return mongoTemplate.insert(letter);
    }

    @Override
    public List selectAllLetters() {
        return mongoTemplate.findAll(Letter.class,"letters");
    }

    @Override
    public List selectLettersByPage(int curPage, int pageSize) {
        Query query=new Query();//Query是条件构造器
        //从第1页开始
        //分页查询,query.skip((curPage-1)*size).limit(size)表示跳过(当前页-1)*每页的大小条数据,输出size条数据
        return mongoTemplate.find(query.skip((curPage-1)*pageSize).limit(pageSize),Letter.class);
    }

    @Override
    public DeleteResult deleteLetterById(String id) {
        Query query=new Query(Criteria.where("_id").is(id));
        return mongoTemplate.remove(query,Letter.class);
    }

    @Override
    public long letterCount() {
        Query query=new Query();
        return mongoTemplate.count(query,Letter.class);
    }
}

说明:

 Query query=new Query(Criteria.where("_id").is(id));

这很好理解: 查询 _id == id 的文档

也可以:使用 .and() 连接多个条件

 Query query=new Query(Criteria.where("_id").is(id).and().where("name").is("你的名字"));

remove会返回一个DeleteResult 里面包含了删除数据的条数,可一通过 ’ . ’ 的方式来验证。

mongoTemplate.remove(query,Letter.class);

分页查询需要新建一个实体类来控制:

package cn.xhubbq.pojo.page;

import cn.xhubbq.pojo.letter.Letter;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;


@Data
@NoArgsConstructor
@AllArgsConstructor
public class LetterPage {
    private long totalpage;//总页数
    private long currentpage;//当前页
    private long totalcount;//总数
    private long pagesize;//页面大小
    private List letters;
    public void setPagesize(int psize){
        this.pagesize=psize;
        totalpage=totalcount%pagesize!=0?totalcount/pagesize+1:totalcount/pagesize;//这段代码一定要在pagesize复制后执行
    }
}
4、编程Controller来测试
package cn.xhubbq.controller.letter;
import cn.hutool.extra.ssh.JschRuntimeException;
import cn.xhubbq.pojo.letter.Letter;
import cn.xhubbq.pojo.page.LetterPage;
import cn.xhubbq.service.letter.LetterServiceImpl;
import com.alibaba.fastjson.JSONObject;
import com.mongodb.client.result.DeleteResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@RestController
public class LetterController {
    @Autowired
    private LetterServiceImpl letterService;
    private static final int PAGE_SIZE=5;

    @ResponseBody
    @RequestMapping("/addLetter")
    public Object addLetter(){
        Letter letter=new Letter("xadgjadbhjas",1,"小翟","titlename","content__is","创建时间","发布时间");
        List lst=new ArrayList<>();
        for(int i=0;i<10;++i){
            lst.add(new Letter("xadgjadbhjas"+('a'*i),i+1,"小翟"+i,"titlename"+i,"content__is","创建时间","发布时间"));
        }
        for (Letter let : lst) {
            letterService.addLetter(let);
        }
        return lst;
    }
    @ResponseBody
    @RequestMapping("/findLetters")
    public List findLetter(){
        return letterService.selectAllLetters();
    }

    @ResponseBody
    @RequestMapping("/letterPage/{curPage}")
    public Object letterPage(@PathVariable int curPage){
        LetterPage letterPage=new LetterPage();
        letterPage.setCurrentpage(curPage);
        letterPage.setTotalcount(letterService.letterCount());//查总数
        letterPage.setPagesize(PAGE_SIZE);

        List letters=letterService.selectLettersByPage(curPage,PAGE_SIZE);
        letterPage.setLetters(letters);
        return letterPage;
    }

    @ResponseBody
    @RequestMapping("/deleteLetter/{id}")
    public String deleteLetter(@PathVariable String id){
        Map map=new HashMap<>();
        if(id!=null){
            DeleteResult deleteResult = letterService.deleteLetterById(id);
            if (deleteResult!=null){
                return JSONObject.toJSONString(deleteResult);
            }
            map.put("state",0);
            map.put("info","error");
            return JSONObject.toJSONString(map);
        }
        map.put("state",0);
        map.put("info","error");
        return JSONObject.toJSONString(map);
    }
}

说明:

使用了restful风格:也就是访问的时候不是 用问号传参 而是:

例如: @RequestMapping("/deleteLetter/{id}")

是:localhost:8080/deleteLetter/1

而不是:localhost:8080/deleteLetter?id=1

使用阿里巴巴的fastJson:

依赖:

        
        
            com.alibaba
            fastjson
            1.2.14
        

云服务器上安装MongoDB

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590762.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号