操作MongoDB的工具类

1.配置文件:

#mongodb config
mongo.host = 127.0.0.1
mongo.port = 27017
mongo.dbname = dk
mongo.username = root
mongo.password = 123456

2.上工具类

package com.shopping.core.base;


import com.mongodb.*;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.shopping.app.util.PageBean;

import org.bson.BSONObject;
import org.bson.BasicBSONObject;
import org.bson.Document;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;


public  class BaseDaoRepository{

    private static Properties properties;

    private static MongoDatabase mongoDatabase;


    public static MongoDatabase getConnectInfo(){
        if(properties==null){
            properties=new Properties();
        }

        InputStream stream = null;
        try {
            stream = BaseDaoRepository.class.getClassLoader()
                    .getResourceAsStream("mongodb.properties");
            properties.load(stream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 获取key对应的value值
        String host=properties.getProperty("mongo.host");
        int port=Integer.parseInt(properties.getProperty("mongo.port"));
        String dbname=properties.getProperty("mongo.dbname");
        String username=properties.getProperty("mongo.username");
        String password=properties.getProperty("mongo.password");
        ServerAddress serverAddress = new ServerAddress(host,port);
        List<ServerAddress> addrs = new ArrayList<ServerAddress>();
        addrs.add(serverAddress);
        MongoCredential credential = MongoCredential.createScramSha1Credential(dbname, username, password.toCharArray());
        List<MongoCredential> credentials = new ArrayList<MongoCredential>();
        credentials.add(credential);
        //通过连接认证获取MongoDB连接
        MongoClient mongoClient = new MongoClient(addrs,credentials);
        //连接到数据库
        mongoDatabase = mongoClient.getDatabase(dbname);
        return mongoDatabase;
    }

    public static PageBean getData(int pageSize, int page, Document query,String c){
        List<Document> list=new ArrayList<>();
        if (mongoDatabase==null){
            getConnectInfo();
        }
        final int offset = PageBean.countOffset(pageSize, page);
        final int length = pageSize;
        MongoCollection<Document> collection=mongoDatabase.getCollection(c);
        Document document=new Document("timestamp",1);
        FindIterable<Document> findIterable = collection.find(query).sort(document);
        MongoCursor<Document> mongoCursor = findIterable.iterator();
        while(mongoCursor.hasNext()){
            Document d=mongoCursor.next();
            list.add(d);
        }
        int allRow = list.size();
        int totalPage = PageBean.countTotalPage(pageSize, allRow);
        final int currentPage = PageBean.countCurrentPage(page);
        PageBean pageBean = new PageBean();
        pageBean.setPageSize(pageSize);
        pageBean.setCurrentPage(currentPage);
        pageBean.setAllRow(allRow);
        pageBean.setTotalPage(totalPage);
        int start=(page-1)*pageSize;
        int end=(page*pageSize);
        if (end>allRow){
            end=allRow;
        }
        List newList = list.subList(start, end);
        pageBean.setList(newList);
        pageBean.init();
        return pageBean;
    }

    public static void insert(String c,List<Document> documents){
        if (mongoDatabase==null){
            getConnectInfo();
        }
        MongoCollection<Document> collection=mongoDatabase.getCollection(c);
        collection.insertMany(documents);
        System.out.println("文档插入成功");
    }

    public static Document getOneById(Document query,String c){
        if (mongoDatabase==null){
            getConnectInfo();
        }
        MongoCollection<Document> collection=mongoDatabase.getCollection(c);
        FindIterable<Document> findIterable = collection.find(query);
        MongoCursor<Document> mongoCursor = findIterable.iterator();
        Document d=null;
        while(mongoCursor.hasNext()){
            d=mongoCursor.next();
        }
        return d;
    }

    public static void update(String c,Document query,Document document){
        if (mongoDatabase==null){
            getConnectInfo();
        }
        MongoCollection<Document> collection=mongoDatabase.getCollection(c);
        collection.updateOne(query,document);
        System.out.println("文档更新成功");
    }


    public static void main( String args[] ){

    }



}

3.分页类:

package com.shopping.app.util;

import java.util.List;
import java.util.Map;


public class PageBean {

    private List list;        //要返回的某一页的记录列表

    private int allRow;         //总记录数
    private int totalPage;        //总页数
    private int currentPage;    //当前页
    private int pageSize;        //每页记录数

    private boolean isFirstPage;    //是否为第一页
    private boolean isLastPage;        //是否为最后一页
    private boolean hasPreviousPage;    //是否有前一页
    private boolean hasNextPage;        //是否有下一页


    public List getList() {
        return list;
    }
    public void setList(List list) {
        this.list = list;
    }
    public int getAllRow() {
        return allRow;
    }
    public void setAllRow(int allRow) {
        this.allRow = allRow;
    }
    public int getTotalPage() {
        return totalPage;
    }
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    public int getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    /** *//**
     * 初始化分页信息
     */
    public void init(){
        this.isFirstPage = isFirstPage();
        this.isLastPage = isLastPage();
        this.hasPreviousPage = isHasPreviousPage();
        this.hasNextPage = isHasNextPage();
    }

    /** *//**
     * 以下判断页的信息,只需getter方法(is方法)即可
     * @return
     */

    public boolean isFirstPage() {
        return currentPage == 1;    // 如是当前页是第1页
    }
    public boolean isLastPage() {
        return currentPage == totalPage;    //如果当前页是最后一页
    }
    public boolean isHasPreviousPage() {
        return currentPage != 1;        //只要当前页不是第1页
    }
    public boolean isHasNextPage() {
        return currentPage != totalPage;    //只要当前页不是最后1页
    }


    /** *//**
     * 计算总页数,静态方法,供外部直接通过类名调用
     * @param pageSize 每页记录数
     * @param allRow 总记录数
     * @return 总页数
     */
    public static int countTotalPage(final int pageSize,final int allRow){
        int totalPage = (allRow % pageSize == 0 && allRow != 0) ? allRow/pageSize : allRow/pageSize+1;
        return totalPage;
    }

    /** *//**
     * 计算当前页开始记录
     * @param pageSize 每页记录数
     * @param currentPage 当前第几页
     * @return 当前页开始记录号
     */
    public static int countOffset(final int pageSize,final int currentPage){
        final int offset;
        if(currentPage == 0){
            offset = 0;
        }else{
            offset = pageSize*(currentPage-1);
        }
        return offset;
    }

    /** *//**
     * 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替
     * @param page 传入的参数(可能为空,即0,则返回1)
     * @return 当前页
     */
    public static int countCurrentPage(int page){
        final int curPage = (page==0?1:page);
        return curPage;
    }

    public static String queryStr(Map<String, String> queryMap) {
        if(null!=queryMap){
            String queryUrl="";
            for(Map.Entry<String, String> qm : queryMap.entrySet()){
                if(qm.getValue()!=null && !qm.getValue().equals("") && qm.getValue().length()>0){
                    queryUrl += "&query." + qm.getKey()+"=" + qm.getValue();
                }
            }
            return queryUrl;
        }
        return "";
    }


}

注意:需要引入包

猜你喜欢

转载自www.cnblogs.com/wyf-love-dch/p/10981026.html
今日推荐