实用小工具
java连接mongoDB
需导入的jar包:
jar包获取步骤: 打开maven仓库地址:maven仓库地址——》搜索需要的jar包名称——》进入所需要的jar包版本详情页点击jar包下载到本地
package cn.jdbc.mongodb;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.WriteConcern;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.bson.Document;
import java.io.UnsupportedEncodingException;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Created by sunxiufang on 2022/2/10 13:45
*/
public class MyQueryTest implements JavaSamplerClient {
private static MongoClient mongoClient;
MongoCollection<Document> collection;
@Override
public void setupTest(JavaSamplerContext javaSamplerContext) {
// System.out.println("===============MongoDBUtil初始化========================");
String ip = "testgdm.joinhealth.cn";
int port =27017;
mongoClient = new MongoClient(ip, port);
// 大部分用户使用mongodb都在安全内网下,但如果将mongodb设为安全验证模式,就需要在客户端提供用户名和密码:
// boolean auth = db.authenticate(myUserName, myPassword);
MongoClientOptions.Builder options = new MongoClientOptions.Builder();
options.cursorFinalizerEnabled(true);
// options.autoConnectRetry(true);// 自动重连true
// options.maxAutoConnectRetryTime(10); // the maximum auto connect retry time
options.connectionsPerHost(300);// 连接池设置为300个连接,默认为100
options.connectTimeout(30000);// 连接超时,推荐>3000毫秒
options.maxWaitTime(5000); //
options.socketTimeout(0);// 套接字超时时间,0无限制
options.threadsAllowedToBlockForConnectionMultiplier(5000);// 线程队列数,如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。
options.writeConcern(WriteConcern.SAFE);//
options.build();
/**
* 获取collection对象 - 指定Collection
*/
String dbName = "cdr";
String collName = "testResult";
collection = mongoClient.getDatabase(dbName).getCollection(collName);
}
@Override
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult sampleResult = new SampleResult();
sampleResult.setSampleLabel("query"); //请求名称
sampleResult.sampleStart(); //请求开始
String id = javaSamplerContext.getParameter("_id");
/**
* 根据id查询
*/
Document docByid = null;
//添加查询条件
Document find = new Document("_id", id);
//遍历集合
FindIterable<Document> documents = collection.find(find);
MongoCursor<Document> mongoCursor = documents.iterator();
while (mongoCursor.hasNext()) {
docByid = mongoCursor.next();
System.out.println("根据ID查询的数据:"+(docByid));
}
String s = docByid.toJson();
if(docByid.isEmpty()){
sampleResult.setSuccessful(false);
}else {
sampleResult.setSuccessful(true);
try {
sampleResult.setResponseData(s.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("success");
}
sampleResult.sampleEnd();
return sampleResult;
}
@Override
public void teardownTest(JavaSamplerContext javaSamplerContext) {
/**
* 关闭Mongodb
*/
if (mongoClient != null) {
mongoClient.close();
mongoClient = null;
}
}
@Override
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("_id","joinhealth166,20170419G0030505911+100101+20170419G0030505");
return arguments;
}
public static void main(String[] args) {
MyQueryTest test = new MyQueryTest();
Arguments arguments = test.getDefaultParameters();
JavaSamplerContext context = new JavaSamplerContext(arguments);
test.setupTest(context);
test.runTest(context);
test.teardownTest(context);
}
}