java根据id查询名字_java将字符串存入GridF并通过id或文件名查询

import staticorg.bson.codecs.configuration.CodecRegistries.fromProviders;import staticorg.bson.codecs.configuration.CodecRegistries.fromRegistries;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava.util.ArrayList;importjava.util.List;importorg.bson.codecs.configuration.CodecProvider;importorg.bson.codecs.configuration.CodecRegistry;importorg.bson.codecs.pojo.PojoCodecProvider;importorg.bson.types.ObjectId;importcom.mongodb.MongoClient;importcom.mongodb.MongoClientOptions;importcom.mongodb.MongoCredential;importcom.mongodb.ServerAddress;importcom.mongodb.client.MongoDatabase;importcom.mongodb.client.gridfs.GridFSBucket;importcom.mongodb.client.gridfs.GridFSBuckets;public classTest {private MongoDatabase database = null;public static void main(String[] args) throwsException {

Test t=newTest();

String ID= t.insertMedicalFile("测试一下1.txt", "fjkasdhfkjhdaslfhklahflasdhlhflk");

String selectMedicalFileByObjectId= t.selectMedicalFileByObjectId("5c91ec501a551431b07eff28");

String selectMedicalFileByFileName= t.selectMedicalFileByFileName("测试一下1.txt");

}/*** 向 IMAGE_FILE 中写入文件记录。

*@paramfileName 文件名

*@paramxmlContent 文件内容。

*@throwsException*/

public String insertMedicalFile(String fileName , String xmlContent) throwsException{

MongoDatabase mds= null;

mds=getMdbOperator();

InputStream inputStream= new ByteArrayInputStream(xmlContent.getBytes("UTF-8"));//业务逻辑模式

GridFSBucket gridFSBucket = GridFSBuckets.create(mds,"IMAGE_FILE");

ObjectId objectId=gridFSBucket.uploadFromStream(fileName, inputStream);

System.out.println("HUC 生成的 objectId = " +objectId);

inputStream.close();return objectId+"";

}/*** 根据文件id返回文件内容

*@paramobjectId

*@return

*/

publicString selectMedicalFileByObjectId(String objectId){

String result= "";try{

MongoDatabase mds= null;

mds=getMdbOperator();

GridFSBucket gridFSBucket= GridFSBuckets.create(mds,"IMAGE_FILE");

ByteArrayOutputStream baos= newByteArrayOutputStream();

gridFSBucket.downloadToStream(newObjectId(objectId), baos);

result= baos.toString("UTF-8");

}catch(Exception e) {

result= "" ; //此处可能会报异常错误,异常错误的原因是 上面 downloadToStream 为空。

e.printStackTrace();

}returnresult ;

}/*** 根据文件名返回文件内容

*@paramfileName

*@return

*/

publicString selectMedicalFileByFileName(String fileName){

String result= "";try{

MongoDatabase mds= null;

mds=getMdbOperator();

GridFSBucket gridFSBucket= GridFSBuckets.create(mds,"IMAGE_FILE");

ByteArrayOutputStream baos= newByteArrayOutputStream();

gridFSBucket.downloadToStream(fileName, baos);

result= baos.toString("UTF-8");

}catch(Exception e) {

result= "" ; //此处可能会报异常错误,异常错误的原因是 上面 downloadToStream 为空。

e.printStackTrace();

}returnresult ;

}/*** 获得链接

*

*@return

*/

publicMongoDatabase getMdbOperator() {try{

MongoClient mongoClient=getMongoClient();if (mongoClient != null) {

CodecProvider pojoCodecProvider=PojoCodecProvider.builder()

.automatic(true).build();

CodecRegistry pojoCodecRegistry=fromRegistries(

MongoClient.getDefaultCodecRegistry(),

fromProviders(pojoCodecProvider));

database= mongoClient.getDatabase("HUC")

.withCodecRegistry(pojoCodecRegistry);returndatabase;

}else{

}

}catch(Exception e) {

e.printStackTrace();

}return null;

}private static MongoClient getMongoClient() throwsException {

MongoClientOptions.Builder build= newMongoClientOptions.Builder();//与目标数据库能够建立的最大connection数量为200,当连接池被用光时,会被阻塞住

build.connectionsPerHost(200);//如果当前所有的connection都在使用中,则每个connection上可以有100个线程排队等待

build.threadsAllowedToBlockForConnectionMultiplier(100);/** 一个线程访问数据库的时候,在成功获取到一个可用数据库连接之前的最长等待时间为2分钟

* 这里比较危险,如果超过maxWaitTime都没有获取到这个连接的话,该线程就会抛出Exception

* 故这里设置的maxWaitTime应该足够大,以免由于排队线程过多造成的数据库访问失败*/build.maxWaitTime(1000 * 60 * 2); //这个就是Server Selection//Timeout?

build.connectTimeout(1000 * 60 * 1); //与数据库建立连接的timeout设置为1分钟

build.socketTimeout(10 * 1000); //发送请求和接收请求的超时时间

MongoClientOptions myOptions =build.build();//创建链接

MongoCredential credential =MongoCredential.createCredential("admin", "HUC", "123456".toCharArray());

List addresses= newArrayList();//mongoDB集群地址

addresses.add(new ServerAddress("192.168.220.130", 27017));

addresses.add(new ServerAddress("192.168.220.128", 27017));

addresses.add(new ServerAddress("192.168.220.129", 27017));return newMongoClient(addresses,credential,myOptions);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值