MongoDB使用JDBC连接
MongoDB使用JDBC连接,对数据库进行新增、删除、更新、修改等操作1.maven引用JDBC驱动包。 2.调用MongoDB相关功能工具类。
·
1.maven引用JDBC驱动包
<!-- mongodb 驱动包 -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>
2.调用MongoDB相关功能工具类
/**
* MongoDB工具类
* @author jiangwei
*
*/
public class MongoDBUtil {
private static Logger logger=LoggerFactory.getLogger(MongoDBUtil.class);
/**
*
* 获取MongoDB数据库连接
*
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
* @return MongoClient
*/
public static MongoClient getMongoClient(String host,int port,String username,String databaseName,String password){
//连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress(host,port);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential(username, databaseName, password.toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(addrs,credentials);
return mongoClient;
}
/**
* MongoDB 获取数据库连接
*
* @param mongoClient MongoDB客户端连接
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
*
* @return MongoDatabase
*/
public static MongoDatabase getMongoDatabase(MongoClient mongoClient,String host,int port,String username,String databaseName,String password){
try {
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase(databaseName);
logger.info("Connect to database successfully");
return mongoDatabase;
} catch (Exception e) {
logger.error( e.getClass().getName() + ": " + e.getMessage() );
}
return null;
}
/**
* 创建集合
* 使用 com.mongodb.client.MongoDatabase 类中的createCollection()来创建集
*
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
* @param collectionName 集合名称
*
*/
public static void createCollection(String host,int port,String username,String databaseName,String password,String collectionName){
try{
//通过连接认证获取MongoDB连接
MongoClient mongoClient = getMongoClient(host, port, username, databaseName, password);
// 连接到数据库
MongoDatabase mongoDatabase =getMongoDatabase(mongoClient,host, port, username, databaseName, password);
logger.info("Connect to database successfully");
mongoDatabase.createCollection(collectionName);
logger.info("集合创建成功");
mongoClient.close();
}catch(Exception e){
logger.error( e.getClass().getName() + ": " + e.getMessage() );
}
}
/**
* 获取集合
* 使用com.mongodb.client.MongoDatabase类的 getCollection() 方法来获取一个集合
*
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
* @param collectionName 集合名称
*
*/
public static void getCollection(String host,int port,String username,String databaseName,String password,String collectionName){
try{
//通过连接认证获取MongoDB连接
MongoClient mongoClient = getMongoClient(host, port, username, databaseName, password);
// 连接到数据库
MongoDatabase mongoDatabase = getMongoDatabase(mongoClient,host, port, username, databaseName, password);
logger.info("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection(collectionName);
logger.info("集合 test 选择成功");
collection.count();
mongoClient.close();
}catch(Exception e){
logger.error( e.getClass().getName() + ": " + e.getMessage() );
}
}
/**
* 插入文档
* 使用com.mongodb.client.MongoCollection类的 insertMany() 方法来插入一个文档
*
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
* @param collectionName 集合名称
* @param documentMap 请求参数
*
*/
public static void addData(String host,int port,String username,String databaseName,String password,
String collectionName,Map<String, Object> documentMap){
try{
//通过连接认证获取MongoDB连接
MongoClient mongoClient = getMongoClient(host, port, username, databaseName, password);
// 连接到数据库
MongoDatabase mongoDatabase = getMongoDatabase(mongoClient,host, port, username, databaseName, password);
logger.info("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection(collectionName);
logger.info("集合 test 选择成功");
//插入文档
/**
* 1. 创建文档 org.bson.Document 参数为key-value的格式
* 2. 创建文档集合List<Document>
* 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document)
* */
// Document document = new Document("title", "MongoDB").
// append("description", "database").
// append("likes", 100).
// append("by", "Fly");
Document document = new Document();
for(Map.Entry<String, Object> entry : documentMap.entrySet()){
document.append(entry.getKey(), entry.getValue());
}
List<Document> documents = new ArrayList<Document>();
documents.add(document);
collection.insertMany(documents);
logger.info("文档插入成功");
mongoClient.close();
}catch(Exception e){
logger.error( e.getClass().getName() + ": " + e.getMessage() );
}
}
/**
* 检索所有文档
* 使用 com.mongodb.client.MongoCollection 类中的 find() 方法来获取集合中的所有文档。
*
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
* @param collectionName 集合名称
*
*/
public static List<Document> findAll(String host,int port,String username,String databaseName,String password,
String collectionName){
List<Document> list=new ArrayList<Document>();
try{
//通过连接认证获取MongoDB连接
MongoClient mongoClient = getMongoClient(host, port, username, databaseName, password);
// 连接到数据库
MongoDatabase mongoDatabase = getMongoDatabase(mongoClient,host, port, username, databaseName, password);
logger.info("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection(collectionName);
logger.info("集合 test 选择成功");
//检索所有文档
/**
* 1. 获取迭代器FindIterable<Document>
* 2. 获取游标MongoCursor<Document>
* 3. 通过游标遍历检索出的文档集合
* */
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
list.add(mongoCursor.next());
}
logger.info("数据条数============>"+list.size());
mongoClient.close();
}catch(Exception e){
logger.error( e.getClass().getName() + ": " + e.getMessage() );
}
return list;
}
/**
* 更新文档
* 使用 com.mongodb.client.MongoCollection 类中的 updateMany() 方法来更新集合中的文档。
*
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
* @param collectionName 集合名称
* @param queryName 更新条件字段名
* @param queryValue 更新条件字段值
* @param documentMap 请求参数
*
*/
public static List<Document> updateData(String host,int port,String username,String databaseName,String password,
String collectionName,String queryName,String queryValue,Map<String, Object> documentMap){
List<Document> list=new ArrayList<Document>();
try{
//通过连接认证获取MongoDB连接
MongoClient mongoClient = getMongoClient(host, port, username, databaseName, password);
// 连接到数据库
MongoDatabase mongoDatabase = getMongoDatabase(mongoClient,host, port, username, databaseName, password);
logger.info("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection(collectionName);
logger.info("集合 test 选择成功");
//更新文档 将文档中likes=100的文档修改为likes=200
Document document = new Document();
for(Map.Entry<String, Object> entry : documentMap.entrySet()){
document.append(entry.getKey(), entry.getValue());
}
collection.updateMany(Filters.eq(queryName, queryValue), new Document("$set",document));
//检索查看结果
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
list.add(mongoCursor.next());
}
mongoClient.close();
}catch(Exception e){
logger.error( e.getClass().getName() + ": " + e.getMessage() );
}
return list;
}
/**
* 删除第一个文档
* 要删除集合中的第一个文档,首先你需要使用com.mongodb.DBCollection类中的 findOne()方法来获取第一个文档,然后使用remove 方法删除。
*
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
* @param collectionName 集合名称
* @param columnName 删除数据查询条件字段名称
* @param value 删除数据查询条件字段值
*
*/
public static List<Document> deleteOne(String host,int port,String username,String databaseName,String password,
String collectionName,String columnName,String value){
List<Document> list=new ArrayList<Document>();
try{
//通过连接认证获取MongoDB连接
MongoClient mongoClient = getMongoClient(host, port, username, databaseName, password);
// 连接到数据库
MongoDatabase mongoDatabase = getMongoDatabase(mongoClient,host, port, username, databaseName, password);
logger.info("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection(collectionName);
logger.info("集合 test 选择成功");
//删除符合条件的第一个文档
collection.deleteOne(Filters.eq(columnName, value));
//检索查看结果
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
list.add(mongoCursor.next());
}
mongoClient.close();
}catch(Exception e){
logger.error( e.getClass().getName() + ": " + e.getMessage() );
}
return list;
}
/**
* 删除多个文档
* 要删除集合中的多个文档,首先你需要使用com.mongodb.DBCollection类中的 findOne()方法来获取第一个文档,然后使用remove 方法删除。
*
* @param host:服务器地址
* @param port:服务器端口号
* @param username 用户名
* @param databaseName 数据库名称
* @param password 密码
* @param collectionName 集合名称
*
*/
public static List<Document> deleteMany(String host,int port,String username,String databaseName,String password,
String collectionName,String columnName,String value){
List<Document> list=new ArrayList<Document>();
try{
//通过连接认证获取MongoDB连接
MongoClient mongoClient = getMongoClient(host, port, username, databaseName, password);
// 连接到数据库
MongoDatabase mongoDatabase = getMongoDatabase(mongoClient,host, port, username, databaseName, password);
logger.info("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection(collectionName);
logger.info("集合 test 选择成功");
//删除所有符合条件的文档
collection.deleteMany(Filters.eq(columnName, value));
//检索查看结果
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
list.add(mongoCursor.next());
}
mongoClient.close();
}catch(Exception e){
logger.error( e.getClass().getName() + ": " + e.getMessage() );
}
return list;
}
public static void main(String[] args) {
// MongoDB的服务器地址
String host="127.0.0.1";
// MongoDB的服务器端口号
int port=27017;
// MongoDB的服务器连接数据库名称
String databaseName="jwbasta";
String username="jwbasta";
String password="****";
Map<String, Object> documentMap=new HashMap<String, Object>();
documentMap.put("id", 1);
documentMap.put("name", "aa");
documentMap.put("sex", "男");
documentMap.put("address", "深圳");
addData(host, port, username, databaseName, password, "test", documentMap);
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)