Mangodb的工具类操作数据库

    Mangodb是面向文档存储的数据库,操作起来比较简单。存储数据使用的是BSON字符串的key-value的形式存储。

mangodb主要常用函数有:insert (插入数据)、update/save(更改)、find()、remove(删除数据)。

     1.配置文件:mongodb.properties

   

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

  

 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.test;

import com.shopping.app.util.PageBean;
import com.shopping.core.base.BaseDaoRepository;
import net.sf.json.JSONArray;
import org.bson.Document;import java.util.*;

/**
 * 测试redis缓存 芒果数据库的插入 查询测试
 */
public class RedisTest {

    public static void main(String[] args) {

        //新增MongoDB 数据表
        List<Document> documents = new ArrayList<Document>();
        Date date = new Date();
        String timestampBody = String.valueOf(date.getTime());
        String chat_type = "chatTest";
        String from = "35920";
        String to = "368923";
        String msg_id = "12";
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        //生成文件
        Document document = new Document().
                append("timestamp", timestampBody).
                append("chat_type", chat_type).
                append("from", from).append("to", to).append("msg_id", msg_id).append("uuid", uuid);
        documents.add(document);
        BaseDaoRepository.insert("chatRecord_test", documents);


        /**
         * 分页查询
         */
        int page = 1;
        //根据条件查询数据库
        Document documentQU = new Document("to", "368923").append("chat_type", "chatTest");
        //用到了MongoDB  查询数据
        PageBean pageBean = BaseDaoRepository.getData(8, page, documentQU, "chatRecord_test");
        System.out.println(pageBean.getList());
        List<Document> documentQUs = pageBean.getList();
        for (Document dc : documentQUs) {
            JSONArray jsonArray = JSONArray.fromObject(dc);
            System.out.println(jsonArray);
            System.out.println(dc.get("_id").toString());
        }

        /***
         * 单个查询
         */
        String uUid = "3d16c5275cc74a6fa7f67ca0c4704546";
        Document query = new Document("uuid", uUid);
        Document result = BaseDaoRepository.getOneById(query, "chatRecord_test");
        String time = result.get("timestamp").toString();
        System.out.println("time" + time);


        /**
         * 修改操作
         */
        result.append("to", 1);
        BaseDaoRepository.update("chatRecord_test", query, result);

    }


}

 

posted @ 2019-06-20 09:43  坠落凡尘的魔鬼  阅读(757)  评论(0编辑  收藏  举报