中間出了一系列莫名其妙的問題,又莫名其妙地好了。
這是我的配置文件,有點亂:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ya</groupId> <artifactId>oeder-logistics-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>oeder-logistics-demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.0.2.RELEASE</version> </dependency> <!--spring data mongodb--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.jetbrains</groupId> <artifactId>annotations</artifactId> <version>RELEASE</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
還導了兩個包:
連接數據庫:
package com.ya; import com.mongodb.*; import com.mongodb.MongoClient; import com.mongodb.client.*; import org.bson.Document; import java.util.ArrayList; import java.util.List; public class MongoDBConnection { //不認證直接鏈接數據庫 public MongoClient getConn(){ MongoClient mongoClient = new MongoClient("localhost",27017); //也可使用MongoClientURI // MongoClientURI mongoClientURI = new MongoClientURI("mongodb://localhost:27017"); // MongoClient mongoClient = new MongoClient(mongoClientURI); return mongoClient; } //通過用戶密碼認證鏈接數據庫 public MongoClient getConnByCredit(){ String name = "test";//用戶名 String dbName = "Test";//數據庫名 char [] pwd = "test".toCharArray();//用戶密碼(將字符串轉換成字符數組) List<ServerAddress> addresses = new ArrayList<>(); //服務器地址:鏈接地址,端口號 ServerAddress address = new ServerAddress("localhost",27017); addresses.add(address); List<MongoCredential> credentials = new ArrayList<>(); //認證方法需要三個參數,用戶名,數據庫名,用戶密碼 MongoCredential credential = MongoCredential.createScramSha1Credential(name,dbName,pwd); credentials.add(credential); //創建鏈接對象 MongoClient mongoClient = new MongoClient(addresses,credentials); return mongoClient; } //測試是否連接成功 public static void main(String[] args) { MongoDBConnection mongoDBConnection = new MongoDBConnection(); MongoDatabase mongoDatabase = null; //MongoClient mongoClient = mongoDBConnection.getConn(); MongoClient mongoClient = mongoDBConnection.getConnByCredit(); // 查詢所有數據庫名稱 MongoIterable<String> dbNameList = mongoClient.listDatabaseNames(); System.out.println("查詢所有數據庫名稱:"); for(String dbName : dbNameList) System.out.println(dbName); //創建數據庫對象 mongoDatabase = mongoClient.getDatabase("Test"); //查詢Test數據庫中所有集合名稱 MongoIterable<String> colNameList = mongoDatabase.listCollectionNames(); System.out.println("查詢Test數據庫中所有集合名稱:"); for(String colName: colNameList) System.out.println(colName); //關閉連接 mongoClient.close(); } }
結果:
增刪改查:
package com.ya; import com.mongodb.MongoClient; import com.mongodb.MongoException; import com.mongodb.client.*; import com.mongodb.client.model.Filters; import org.bson.Document; import java.util.ArrayList; import java.util.List; public class MongoTest { //查詢指定數據庫中所有集合 public void selectCollection(MongoDatabase database) { try { //查詢Test數據庫中所有集合名稱 MongoIterable<String> colNameList = database.listCollectionNames(); for (String colName : colNameList) System.out.println(colName); System.out.println("[INFO] : Select collection success!"); } catch (MongoException e) { e.printStackTrace(); System.out.println("[ERROR] : Select collection field!"); } } //新建集合 public void createCollection(MongoDatabase database){ try{ //創建新集合 database.createCollection("testCol"); System.out.println("[INFO] : Create collection success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Create collection field!"); } } //刪除集合 public void deleteCollection(MongoDatabase database){ try{ //刪除集合 MongoCollection mongoCollection = database.getCollection("testCol"); mongoCollection.drop(); System.out.println("[INFO] : Drop collection success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Drop collection field!"); } } //查詢文檔數據 public void selectData(MongoDatabase database){ try{ //獲取數據庫中的user集合 MongoCollection<Document> collection = database.getCollection("user"); //獲取user集合中的文檔 FindIterable<org.bson.Document> iterable = collection.find(); //通過迭代器遍歷找到的文檔中的信息 MongoCursor<org.bson.Document> iterator = iterable.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next().toJson()); } System.out.println("[INFO] : Select data success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Select data field!"); } } //插入數據 public void insertData(MongoDatabase database){ try { MongoCollection mongoCollection = database.getCollection("user"); //一次插入一條數據 Document document = new Document("user_id","4") .append("user_name","test") .append("user_pwd","test"); mongoCollection.insertOne(document); //一次插入多條數據 Document document1 = new Document("user_id","5") .append("user_name","test") .append("user_pwd","test1"); Document document2 = new Document("user_id","6") .append("user_name","test") .append("user_pwd","test2"); List<Document> documents = new ArrayList<>(); documents.add(document1); documents.add(document2); mongoCollection.insertMany(documents); System.out.println("[INFO] : Insert data success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Insert data field!"); } } //修改數據 public void updateData(MongoDatabase database){ try { MongoCollection mongoCollection = database.getCollection("user"); //修改滿足條件的第一條數據 mongoCollection.updateOne(Filters.eq("user_name","test"),new Document("$set",new Document("user_pwd","tttt"))); //修改滿足條件的所有數據 mongoCollection.updateMany(Filters.eq("user_name","test"),new Document("$set",new Document("user_pwd","tttt"))); System.out.println("[INFO] : Update data success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Update data field!"); } } //刪除數據 public void deleteData(MongoDatabase database){ try { MongoCollection mongoCollection = database.getCollection("user"); //刪除滿足條件的第一條記錄 mongoCollection.deleteOne(Filters.eq("user_name","test")); //刪除滿足條件的所有數據 mongoCollection.deleteMany(Filters.eq("user_name","test")); System.out.println("[INFO] : Delete data success!"); }catch(MongoException e){ e.printStackTrace(); System.out.println("[ERROR] : Delete data field!"); } } public static void main(String args[]){ MongoTest mongoTest =new MongoTest(); MongoDBConnection mongoDBConnection = new MongoDBConnection(); //新建鏈接 MongoClient mongoClient = mongoDBConnection.getConn(); //創建數據庫對象 MongoDatabase mongoDatabase = mongoClient.getDatabase("Test"); //在Test里新建集合 //mongoTest.createCollection(mongoDatabase); //刪除集合 //mongoTest.deleteCollection(mongoDatabase); //查詢Test數據庫中所有集合名稱 mongoTest.selectCollection(mongoDatabase); //插入數據 //mongoTest.insertData(mongoDatabase); //修改數據 //mongoTest.updateData(mongoDatabase); //刪除數據 //mongoTest.deleteData(mongoDatabase); //查詢數據文檔 //mongoTest.selectData(mongoDatabase); //關閉連接 mongoClient.close(); } }