MongoDB——JDBC

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 下面是最近项目中用的针对于MongoDB数据库封装的JDBC,先做一个大概的了解,关于用法,下一篇博文将详细介绍

  下面是最近项目中用的针对于MongoDB数据库封装的JDBC,先做一个大概的了解,关于用法,下一篇博文将详细介绍


-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
public class MongoJdbc {
  /** 客户端连接池 */
  private static MongoClient mongoClient;
  /** 线程安全的数据库链接 */
  private static MongoDatabase mongoDatabase = null;
  /** 服务器信息 */
  private String repset;
  /** 数据库信息 */
  private String database;
  /** 用户名 */
  private String user;
  /** 密码 */
  private String password;
  /** 单个host允许链接的最大链接数 */
  private String connectionsPerHost;
  /** 线程队列数 */
  private String threadsAllowedToBlockForConnectionMultiplier;
  public void setRepset(String repset) {
    this.repset = repset;
  }
  public void setDatabase(String database) {
    this.database = database;
  }
  public void setUser(String user) {
    this.user = user;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  public void setConnectionsPerHost(String connectionsPerHost) {
    this.connectionsPerHost = connectionsPerHost;
  }
  public void setThreadsAllowedToBlockForConnectionMultiplier(String threadsAllowedToBlockForConnectionMultiplier) {
    this.threadsAllowedToBlockForConnectionMultiplier = threadsAllowedToBlockForConnectionMultiplier;
  }
  private void init() {
    List<ServerAddress> serverAddressList = new ArrayList<ServerAddress>();
    if (this.repset == null || "".equals(this.repset)) {
      throw new MongodbException("未配置ip地址和端口号!");
    }
    if (this.connectionsPerHost == null || "".equals(this.connectionsPerHost)) {
      throw new MongodbException("未配置单个host允许链接的最大链接数!");
    }
    if (this.threadsAllowedToBlockForConnectionMultiplier == null || "".equals(this.threadsAllowedToBlockForConnectionMultiplier)) {
      throw new MongodbException("未配置线程队列数!");
    }
    if (this.user == null || "".equals(this.user)) {
      throw new MongodbException("未配置用户名!");
    }
    if (this.password == null || "".equals(this.password)) {
      throw new MongodbException("未配置密码!");
    }
    if (this.database == null || "".equals(this.database)) {
      throw new MongodbException("未配置库名!");
    }
    String[] hostPorts = this.repset.split(",");
    for (int i = 0; i < hostPorts.length; i++) {
      String[] hostPortArr = hostPorts[i].split(":");
      if (hostPortArr.length != 2) {
        throw new MongodbException("mongodb主机配置异常");
      }
      String host = hostPortArr[0];
      String port = hostPortArr[1];
      ServerAddress serverAddress = new ServerAddress(host, Integer.parseInt(port));
      serverAddressList.add(serverAddress);
    }
    MongoClientOptions mongoClientOptions = new MongoClientOptions.Builder().connectionsPerHost(Integer.parseInt(this.connectionsPerHost))
        .threadsAllowedToBlockForConnectionMultiplier(Integer.parseInt(this.threadsAllowedToBlockForConnectionMultiplier)).build();
    MongoCredential credential = MongoCredential.createCredential(this.user, this.database, this.password.toCharArray());
    mongoClient = new MongoClient(serverAddressList, Arrays.asList(credential), mongoClientOptions);
    mongoDatabase = mongoClient.getDatabase(database);
  }
  public MongoDatabase getMongodb() {
    if (null == mongoDatabase) {
      init();
    }
    return mongoDatabase;
  }
}
-
相关文章
|
NoSQL MongoDB
11 MongoDB - 数据查询(统计个数)
11 MongoDB - 数据查询(统计个数)
1509 0
大模型应用开发-LangChain入门教程
大模型应用开发-LangChain入门教程
464 0
|
安全 Java 持续交付
Java本地远程服务器debug调试
Java本地远程服务器debug调试
473 0
|
3月前
|
NoSQL Java 数据库连接
实战|StarRocks 通过 JDBC Catalog 访问 MongoDB 的数据
本文章介绍如何通过 StarRocks 的 JDBC Catalog 功能,结合 MongoDB BI Connector,将 MongoDB 数据便捷接入 StarRocks,实现数据打通和 SQL 查询分析,以下是整体流程图。
|
9月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
347 9
Nest.js 实战 (十三):实现 SSE 服务端主动向客户端推送消息
这篇文章介绍了在Nest.js应用中使用Server-Sent Events (SSE)的技术。文章首先讨论了在特定业务场景下,为何选择SSE而不是WebSocket作为实时通信系统的实现方式。接着解释了SSE的概念,并展示了如何在Nest.js中实现SSE。文章包含客户端实现的代码示例,并以一个效果演示结束,总结SSE在Nest.js中的应用。
382 0
Nest.js 实战 (十三):实现 SSE 服务端主动向客户端推送消息
|
NoSQL MongoDB 关系型数据库
13个Mongodb GUI可视化管理工具,总有一款适合你
本文介绍了13个好用的MongoDB可视化工具。Robomongo,MongoDB Compass,phpMoAdmin等
111440 0
13个Mongodb GUI可视化管理工具,总有一款适合你
|
负载均衡 网络协议 中间件
IP负载均衡技术
【8月更文挑战第17天】IP负载均衡技术
264 4
|
Java 应用服务中间件
SpringBoot 记录 access.log 日志
SpringBoot 记录 access.log 日志
301 0
SpringBoot 记录 access.log 日志
|
关系型数据库 MySQL 数据安全/隐私保护
【MySQL】手把手教你MySQL各版本忘记密码如何处理
【MySQL】手把手教你MySQL各版本忘记密码如何处理