zoukankan      html  css  js  c++  java
  • 操作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 "";
        }
    
    
    }

    注意:需要引入包

  • 相关阅读:
    设计模式课程 设计模式精讲 14-3 组合模式源码解析
    设计模式课程 设计模式精讲 14-2 组合模式coding
    设计模式课程 设计模式精讲 14-1 组合模式讲解
    设计模式课程 设计模式精讲 13-3 享元模式源码解析
    设计模式课程 设计模式精讲 13-2 享元模式coding
    设计模式课程 设计模式精讲 13-1 享元模式讲解
    设计模式课程 设计模式精讲 12-3 适配器模式源码解析
    设计模式课程 设计模式精讲 12-2 适配器模式coding
    设计模式课程 设计模式精讲 11-3 装饰者模式源码解析
    12个很少被人知道的CSS事实
  • 原文地址:https://www.cnblogs.com/wyf-love-dch/p/10981026.html
Copyright © 2011-2022 走看看