原生态mongo连接查询代码





properties中的配置信息


## --------- mogon连接池---------
# 服务地址
mongoUrl=172.30.10.101
# 服务端口
mongoPort=22001
# 用户名
mongoUser=yjdb
# 密码
mongoPassword=yjdb1234
# 数据库名字
mongoDbName=yjdb
#每个主机最大连接数
mongoConnectionsPerHost=50
# 线程队列数
mongoThreadsAllowedToBlockForConnectionMultiplier=50
# 最大等待时间
mongoMaxWaitTime=120000
#与数据库建立连接的timeout设置为1分钟
mongoConnectTimeout=60000
# socket超时
mongoSocketTimeout=0




------------------------------------------------------------------------------------------------------------------------------------------------------------------------
项目中----去调jar包中的连接mongo方法


package com.hzcominfo.dataggr.da.warning.mongo;




import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;




import com.alibaba.fastjson.JSONObject;
import com.hzcominfo.application.nosqldatabase.mongodb.MongoDBUtil;




/**
 * 类说明:连接mongo类
 * @author lixl
 *
 */
@Component
public class MongoInstance {
    @Value("${mongoUrl}")
    private String mongoUrl;
    @Value("${mongoPort}")
    private int port;
    @Value("${mongoUser}")
    private String user;
    @Value("${mongoPassword}")
    private String password;
    @Value("${mongoDbName}")
    private String dbName;
    @Value("${mongoConnectionsPerHost}")
    private int connectionsPerHost;   //  每个主机最大连接数
    @Value("${mongoThreadsAllowedToBlockForConnectionMultiplier}")
    private int threadsAllowedToBlockForConnectionMultiplier;   //  线程队列数
    @Value("${mongoMaxWaitTime}")
    private int maxWaitTime;   //最大等待时间
    @Value("${mongoConnectTimeout}")
    private int connectTimeout;   //与数据库建立连接的timeout设置为1分钟
    @Value("${mongoSocketTimeout}")
    private int socketTimeout;   //socket超时
    
    
    /**
     * 获得MongoDBUtil的单例
     * @return
     */
    public  MongoDBUtil getInstance(){
        JSONObject param = new JSONObject();
        param.put("url", mongoUrl);
        param.put("port", port);
        param.put("user", user);
        param.put("password", password);
        param.put("dbName", dbName);
        param.put("connectionsPerHost", connectionsPerHost);
        param.put("threadsAllowedToBlockForConnectionMultiplier", threadsAllowedToBlockForConnectionMultiplier);
        param.put("maxWaitTime", maxWaitTime);
        param.put("connectTimeout", connectTimeout);
        param.put("socketTimeout", socketTimeout);
        return MongoDBUtil.getMongoDBUtilInstance(param);
    }
}


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
连接mongo的类  
本人打成jar包放在公司仓库里的




package com.hzcominfo.application.nosqldatabase.mongodb;




import java.util.ArrayList;
import java.util.List;




import com.alibaba.fastjson.JSONObject;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.WriteResult;




/**
 * 类说明    mongo连接类
 * @author lixl
 *
 */
public class MongoDBUtil {
    private String mongoUrl;
    private int port;
    private String user;
    private String password;
    private String dbName;
    private int connectionsPerHost;   //  每个主机最大连接数
    private int threadsAllowedToBlockForConnectionMultiplier;   //  线程队列数
    private int maxWaitTime;   //最大等待时间
    private int connectTimeout;   //与数据库建立连接的timeout设置为1分钟
    private int socketTimeout;   //socket超时
    private MongoClient mongoClient = null;
    
    /**
     * 私有的构造函数
     */
    private MongoDBUtil(JSONObject param){
        if(mongoClient == null){
            try {
                readConfig(param);
                MongoClientOptions.Builder build = new MongoClientOptions.Builder();        
                build.connectionsPerHost(connectionsPerHost);   //  每个主机最大连接数
                build.threadsAllowedToBlockForConnectionMultiplier(threadsAllowedToBlockForConnectionMultiplier); //  线程队列数
                build.maxWaitTime(maxWaitTime);
                build.connectTimeout(connectTimeout);    //与数据库建立连接的timeout设置为1分钟
                build.socketTimeout(socketTimeout);  //socket超时
                MongoClientOptions myOptions = build.build();       
                ServerAddress serverAddress = new ServerAddress(mongoUrl,port);  
                List<ServerAddress> seeds = new ArrayList<ServerAddress>();  
                seeds.add(serverAddress);  
                MongoCredential credentials = MongoCredential.createScramSha1Credential(user, dbName, password.toCharArray());  
                List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();  
                credentialsList.add(credentials);  
                //数据库连接实例
                System.err.println("开始连接mongo  ---------");
                mongoClient = new MongoClient(seeds, credentialsList,myOptions);  
                System.err.println("连接mongo成功  ---------");
            } catch (Exception e){
                System.err.println("连接mongo失败 ----------");
                e.printStackTrace();
            }
        }
    }
    
    /**
     * 读取properties中的配置
     */
    public void readConfig(JSONObject param){
        try {
            mongoUrl=param.getString("url");
            port=param.getInteger("port");  
            user=param.getString("user");  
            password=param.getString("password");   
            dbName=param.getString("dbName");   
            connectionsPerHost=param.getInteger("connectionsPerHost");  
            threadsAllowedToBlockForConnectionMultiplier=param.getInteger("threadsAllowedToBlockForConnectionMultiplier");  
            maxWaitTime=param.getInteger("maxWaitTime");  
            connectTimeout=param.getInteger("connectTimeout");  
            socketTimeout=param.getInteger("socketTimeout");  
        } catch (Exception e1) {
            System.err.println("读取mongo配置异常");
            e1.printStackTrace();
        }  
    }
    
    
    private static final MongoDBUtil mongoDBUtil = null;
    /**
     * 获得MongoDBUtil的单例
     * @return
     */
    public static MongoDBUtil getMongoDBUtilInstance(JSONObject param){
        if(mongoDBUtil == null){
            return new MongoDBUtil(param);
        }
        return mongoDBUtil;
    }
    
    /**
     * 获得连接集合的实例
     * @param collectionName
     * @return
     */
    public DBCollection getCollection(String collectionName) {
        return mongoClient.getDB(dbName).getCollection(collectionName);
    }




    /**
     * 获得连接数据库的实例
     * @return
     */
    public DB getDb() {
        return mongoClient.getDB(dbName);
    }
    
    /**
     * 关闭连接释放资源
     */
    public void closeClient() {
        if(mongoClient != null){
            mongoClient.close();
            System.err.println("关闭mongo连接  --------------");
        }
    }
    
    /**
     * 查询方法
     * @param collectionName
     * @param keys
     * @param values
     * @param num
     * @return
     */
    public ArrayList<DBObject> find(String collectionName,List<JSONObject> kvs) {
        ArrayList<DBObject> resultList = new ArrayList<DBObject>();
        DBCursor cursor = null;
        if(kvs.size()>0){
            try {
                DBCollection dbCollection = getDb().getCollection(collectionName);
                BasicDBObject queryObj = new BasicDBObject();
                for (JSONObject kv : kvs) {
                    queryObj.put(kv.get("key").toString(), kv.get("value"));
                }
                cursor = dbCollection.find(queryObj);
                while(cursor.hasNext()){
                    resultList.add(cursor.next());
                }
                return resultList;
            } catch (Exception e) {
                System.err.println("查询异常");
                e.printStackTrace();
            } finally{              
                if(null != cursor){
                    cursor.close();
                }
            }
        }
        return resultList;
    }
}




----------------------------------
controller具体的调用  (本公司没有业务层直接在controller调的)


    @Inject
    private MongoInstance mongo;


    /**
     * 查询一条预警数据数据  
     * @param UUID
     * @return
     * @throws Exception
     */
    @ResponseBody
    @RequestMapping("findOneDataByUUID")
    public String findOneDataByUUID(Model mode, String UUID) throws Exception {
        MongoDBUtil util  = mongo.getInstance();
        try {
            List<JSONObject> kvs = new ArrayList<JSONObject>();
            JSONObject kv = new JSONObject();
            kv.put("key", "UUID");
            kv.put("value", UUID);
            kvs.add(kv);
            List<DBObject> data = util.find("YJDB_TARGET", kvs);
            if(data.size()>0){
                String infoTemplate = infoTemplate(UUID);
                return jxTemplate(infoTemplate,data.get(0));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            util.closeClient();
        }
        return "未查到相关预警信息";
    }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunForYou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值