Java连接MongoDB数据库的例子

之前的博文介绍了,MongoDB利用shell命令进行增删改查的的操作。实际上,更常用的是利用mongodb给的一些驱动插件,利用第三方的工具对MongoDB进行数据库的操作,本文就是利用java连接MongoDB数据库

基本的步骤
  1. 先下载mongodb-java的驱动,maven依赖如下

    <!-- mongo java框架jongo -->
    	<dependency>
    		<groupId>org.mongodb</groupId>
    		<artifactId>mongo-java-driver</artifactId>
    		<version>3.4.2</version>
    	</dependency>
    

    有必要提一点的是,最新官方文档中,提到

    For new applications, the preferred artifact is mongodb-driver-sync; however, the legacy mongo-java-driver uber jar is still available. The uber jar contains: the BSON library, the core library, and the mongodb-driver.

    新程序优先选择mongodb-driver-sync,旧的mongo-java-driver 依然可用,超集 jar中包含BSON库,代码库和mongodb的驱动
    新的程序jar

    <dependencies>
       <dependency>
           <groupId>org.mongodb</groupId>
           <artifactId>mongodb-driver-sync</artifactId>
           <version>3.11.0</version>
       </dependency>
    </dependencies>
    

    如果不是maven项目 ,可以直接下载jar包

  2. 连接mongodb的工具类

    import java.util.ArrayList;
    import java.util.List;
    
    import com.mongodb.MongoClient;
    import com.mongodb.MongoClientOptions;
    import com.mongodb.MongoCredential;
    import com.mongodb.ServerAddress;
    import com.mongodb.WriteConcern;
    
    /**
     * Mongo数据库连接,单例模式(读写分离)
     * @author 		leaderhoo
     * @date		2017/02/24
     */
    public class MongoUtil {
         
    	
    	private static MongoClient mongoReadClient;
        private static MongoClient mongoWriteClient;
    	
        static {
         
        	MongoClientOptions.Builder options  = new MongoClientOptions.Builder();
        	options.connectionsPerHost(5000);// 连接池设置为300个连接,默认为100
    		options.connectTimeout(85000);  // 连接超时,推荐>3000毫秒
    		options.maxWaitTime(15000);      //
    		options.socketTimeout(0);       // 套接字超时时间,0无限制
    		options.threadsAllowedToBlockForConnectionMultiplier(10000);
    		// 线程队列数,如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。
    		options.writeConcern(WriteConcern.SAFE);
    	 
    		//配置数据源
    		MongoClientOptions myOptions = options.build();
    		List<ServerAddress> seeds = new ArrayList<ServerAddress>();
    		List<MongoCredential> credentials = new ArrayList<>();
    	
    		//读mongo配置
    		ServerAddress address = new ServerAddress(MyMongonDBConfig.MONGO_READ_URL, MyMongonDBConfig.MONGO_READ_PORT); //地址 + 端口
    		seeds.add(address);
    		//用户认证,如果mongodb没有开启,可以注释掉
    		MongoCredential credential = MongoCredential.createCredential(MyMongonDBConfig.MONGO_READ_USER,
    				MyMongonDBConfig.MONGO_READ_DBNAME, MyMongonDBConfig.MONGO_READ_PWD.toCharArray());
    		credentials.add(credential);
    		mongoReadClient = new MongoClient(seeds, credentials,myOptions);
    		
    		//写mongo配置
    		address = new ServerAddress(MyMongonDBConfig.MONGO_WRITE_URL, MyMongonDBConfig.MONGO_WRITE_PORT);
    		seeds.add(address);
    		credential = MongoCredential.createCredential(MyMongonDBConfig.MONGO_WRITE_USER,
    				MyMongonDBConfig.MONGO_WRITE_DBNAME, MyMongonDBConfig.MONGO_WRITE_PWD.toCharArray());
    		credentials.add(credential);
    		mongoWriteClient = new MongoClient(seeds, credentials,myOptions);
    	}
    
        //获取读mongo连接
    	public static MongoClient getMongoReadClient() {
         
    		return mongoReadClient;
    	}
    	//获取写mongo连接
    	public static MongoClient getWriteMongoClient() {
         
    		return mongoWriteClient;
    	}
    	
    	//测试两个是不是一个连接
    	public static void main(String[] args) {
         
    		MongoClient read = MongoUtil.mongoReadClient;
    		MongoClient write = MongoUtil.mongoReadClient;
    	}
    }
    

    上边的代码,就是我在开发者写的一个用于获取MongoDB连接的驱动工具代码,配置项写在mongodb.properties, 利用Properties读取
    配置类

    public class MyMongonDBConfig {
         
    	
    	//mongo据库数据读源
    	public static final String MONGO_READ_USER    =  ReadProperty.getDataBase("MONGO.SLAVE1.USER");
    	public static final String MONGO_READ_PWD     =  ReadProperty.getDataBase("MONGO.SLAVE1.PASSWORD");
    	public static final int    MONGO_READ_PORT    =  Integer.valueOf(ReadProperty.getDataBase("MONGO.SLAVE1.PORT"));
    	public static final String MONGO_READ_DBNAME  =  ReadProperty.getDataBase("MONGO.SLAVE1.DBNAME");
    	public static final String MONGO_READ_URL     =  ReadProperty.getDataBase("MONGO.SLAVE1.URL");
    	
    	//mongo数据库数据写源
    	public static final String MONGO_WRITE_USER    =  ReadProperty.getDataBase("MONGO.MASTER.USER");
    	public static final String MONGO_WRITE_PWD     =  ReadProperty.getDataBase("MONGO.MASTER.PASSWORD");
    	public static final int    MONGO_WRITE_PORT    =  Integer.valueOf(ReadProperty.getDataBase(
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值