From 90b61f578423acefa479723f550929df73b2ff3c Mon Sep 17 00:00:00 2001 From: zhaoyz Date: Thu, 22 Feb 2024 18:13:08 +0800 Subject: [PATCH] =?UTF-8?q?mongodb=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9A=84?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=92=8C=E8=BF=9E=E6=8E=A5=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vital-signs/pom.xml | 9 ++++ .../rax/vital/datasource/MongoDBSource.java | 54 +++++++++++++++++++ .../controller/MedicineController.java | 23 ++++++-- 3 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 vital-signs/src/main/java/com/rax/vital/datasource/MongoDBSource.java diff --git a/vital-signs/pom.xml b/vital-signs/pom.xml index 02ec988..1104875 100644 --- a/vital-signs/pom.xml +++ b/vital-signs/pom.xml @@ -30,6 +30,11 @@ com.rax common-security + + + com.rax + quartz + com.rax @@ -40,6 +45,10 @@ org.springframework.boot spring-boot-starter-websocket + + org.springframework.boot + spring-boot-starter-data-mongodb + \ No newline at end of file diff --git a/vital-signs/src/main/java/com/rax/vital/datasource/MongoDBSource.java b/vital-signs/src/main/java/com/rax/vital/datasource/MongoDBSource.java new file mode 100644 index 0000000..87774ff --- /dev/null +++ b/vital-signs/src/main/java/com/rax/vital/datasource/MongoDBSource.java @@ -0,0 +1,54 @@ +package com.rax.vital.datasource; + +import com.mongodb.ConnectionString; +import com.mongodb.MongoClientSettings; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; +import org.springframework.data.mongodb.SpringDataMongoDB; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory; + +import java.util.concurrent.TimeUnit; + +public class MongoDBSource { + private String host; + private String password; + private String username; + private static final String authenticationDatabase = "admin"; + private String database; + private MongoClient mongoClient; + + public MongoDBSource(String host, String password, String username, String database) { + this.host = host; + this.password = password; + this.username = username; + this.database = database; + } + + public MongoTemplate open() { + MongoClientSettings.Builder mongoBuilder = MongoClientSettings.builder(); + // mongodb://账户:密码@ip:端口/数据库名?authSource=admin + String connectionUrl = "mongodb://" + this.username + ":" + this.password + "@" + this.host + "/" + this.database + "?authSource=admin"; + mongoBuilder.applyConnectionString(new ConnectionString(connectionUrl)); + mongoBuilder.applyToConnectionPoolSettings(builder -> { + // 允许的最大连接数。 + builder.maxSize(120); + // 最小连接数。 + builder.minSize(10); + // 池连接可以存活的最长时间。零值表示寿命没有限制。超过其生命周期的池连接将被关闭并在必要时由新连接替换 + builder.maxConnectionLifeTime(0, TimeUnit.SECONDS); + // 池连接的最大空闲时间。零值表示对空闲时间没有限制。超过其空闲时间的池连接将被关闭并在必要时由新连接替换 + builder.maxConnectionIdleTime(6, TimeUnit.MINUTES); + // 默认最大连接时间120s; + builder.maxWaitTime(60000, TimeUnit.MILLISECONDS); + }); + mongoClient = MongoClients.create(mongoBuilder.build(), SpringDataMongoDB.driverInformation()); + SimpleMongoClientDatabaseFactory simpleMongoClientDatabaseFactory = new SimpleMongoClientDatabaseFactory(mongoClient, database); + MongoTemplate mongoTemplate = new MongoTemplate(simpleMongoClientDatabaseFactory); + return mongoTemplate; + } + + public void close() { + mongoClient.close(); + } +} diff --git a/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java b/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java index c8caeb5..15a295f 100644 --- a/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java +++ b/vital-signs/src/main/java/com/rax/vital/medicine/controller/MedicineController.java @@ -1,18 +1,26 @@ package com.rax.vital.medicine.controller; +import com.mongodb.client.MongoClient; import com.rax.common.core.util.R; +import com.rax.vital.datasource.MongoDBSource; import com.rax.vital.medicine.service.AIMedicineService; import com.rax.vital.medicine.service.DoctorMedicineService; import com.rax.vital.medicine.vo.MedicineVO; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.http.HttpHeaders; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.Map; + /** * 用药 * @date 2024.2.19 @@ -31,12 +39,21 @@ public class MedicineController { @MessageMapping("/doctorMedicine") @SendTo("/topic/doctorMedicine") public String doctorMedicine(String msg) { + MongoDBSource mongoDBSource = new MongoDBSource("localhost:27017", "root", "root", "ceshi"); + MongoTemplate template = mongoDBSource.open(); + Query query = new Query(); + Criteria criteria = new Criteria(); + criteria.where(""); + query.addCriteria(criteria); + query.limit(1); + List cs = template.find(query, Map.class, "cs"); + mongoDBSource.close(); return msg; } -/* @MessageMapping("/getMedicineFlag") + @MessageMapping("/getMedicineFlag") @SendTo("/topic/medicineFlag") public R getMedicineFlag(String id, String name) { - - }*/ + return R.ok(); + } }