目前我所接触过的前后端分离开发的小项目,后端一般都是对数据库操做的比较多(我还是一个没有接触过真正项目开发,平时都是在网上看的一些项目视频跟着做的...),所以今天就来整一个Java连接MongoDB数据库的小流程。
数据库部分
1、开启MongoDB服务,不带开启用户认证的参数(因为现在数据库中还没有用户信息)
2、创建用户(用户名,密码,角色)一定要在admin设置一个高权限的用户
3、停止服务;再次启动服务时,开启用户认证(修改mongodb配置文件)
4、连接 (使用用户名、密码,指定可操作的数据库)
5、其他操作
Java代码部分
Java连接MongoDB时,可以创建一个Maven项目(因为所需的依赖项目都有提供),也可一创建一个普通的Java文件,只需手动引进几个jar包(gson-2.8.2.jar,hamcrest-core-1.3.jar,junit-4.12.jar,mongo-java-driver-3.12.1.jar),在根目录下创建一个libs的文件夹,将以上一个jar包放进去。以下是创建一个普通的Java文件实现连接的
在src目录下创建mongodb.properties文件,文件内容如下
host="本机/mongodb中配置的IP地址"
port=27017
dbname="要连接的数据库名"
username="用户名"
password="密码"
在src目录下创建MongoUtils.java文件
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class MongoUtils {
private static Properties properties;
private static MongoDatabase mongoDatabase;
private static InputStream stream = null;
private static String host;
private static int port;
private static String dbname;
private static String username;
private static String password;
/*加载静态变量*/
static {
if (properties == null){
properties = new Properties();
}
try {
stream = MongoUtils.class.getClassLoader().getResourceAsStream("mongodb.properties");
properties.load(stream);
} catch (IOException e) {
e.printStackTrace();
}
host = properties.getProperty("host");
port = Integer.parseInt(properties.getProperty("port"));
dbname = properties.getProperty("dbname");
username = properties.getProperty("username");
password = properties.getProperty("password");
}
/*定义方法,获取MongoDB连接对象*/
public static MongoClient getMongoClient(){
// String addr = "mongodb://" + host + ":" + port;
String addr = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/" + dbname;
MongoClient mongoClient = MongoClients.create(addr);
return mongoClient;
}
/*定义一个方法,实现连接指定数据库*/
public static MongoDatabase getMongoConn(){
MongoClient mongoClient = getMongoClient();
mongoDatabase = mongoClient.getDatabase(dbname);
System.out.println("数据库连接成功!");
return mongoDatabase;
}
}
在src文件夹下创建一个测试文件TestMongo.java
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import org.bson.Document;
import org.junit.Test;
public class TestMongo {
private static MongoDatabase mongoDatabase;
public static void main(String[] args) {
mongoDatabase = MongoUtils.getMongoConn();
}
@Test
public void getDBs(){
MongoClient mongoClient = MongoUtils.getMongoClient();
MongoIterable<String> databaseNames = mongoClient.listDatabaseNames();
for (String databaseName : databaseNames) {
System.out.println(databaseName);
}
}
@Test
public void getCollection(){
mongoDatabase = MongoUtils.getMongoConn();
MongoIterable<String> collectionNames = mongoDatabase.listCollectionNames();
for (String collectionName : collectionNames) {
System.out.println(collectionName);
}
}
@Test
public void createCollection(){
mongoDatabase = MongoUtils.getMongoConn();
mongoDatabase.createCollection("itcast");
System.out.println("创建集合成功!");
}
@Test
public void dropCollection(){
mongoDatabase = MongoUtils.getMongoConn();
MongoCollection<Document> itcast = mongoDatabase.getCollection("itcast");
itcast.drop();
System.out.println("集合删除成功!");
}
}