From 5589258324faa6d9e1ec7e5226e98dc2e1a18adc Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 05 二月 2024 09:28:34 +0800
Subject: [PATCH] 集成graphql和jpa

---
 dujy-admin/pom.xml                                                                                 |   11 +++
 dujy-modules/dujy-demo/pom.xml                                                                     |   19 ++++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/Student.java                          |   22 +++++++
 dujy-admin/src/main/resources/application-dev.yml                                                  |   27 +++++++++
 dujy-admin/src/main/resources/application-prod.yml                                                 |   28 +++++++++
 dujy-common/dujy-common-redis/src/main/java/org/dromara/common/redis/handler/KeyPrefixHandler.java |    1 
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/TestJPAController.java            |   25 ++++++++
 dujy-modules/dujy-demo/src/main/resources/graphql/schema.graphql                                   |    5 +
 pom.xml                                                                                            |    1 
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IStudentRepository.java              |   10 +++
 10 files changed, 146 insertions(+), 3 deletions(-)

diff --git a/dujy-admin/pom.xml b/dujy-admin/pom.xml
index 2da1d5a..714fe13 100644
--- a/dujy-admin/pom.xml
+++ b/dujy-admin/pom.xml
@@ -70,7 +70,16 @@
             <groupId>org.dujy</groupId>
             <artifactId>dujy-demo</artifactId>
         </dependency>
-
+        <!-- jpa -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <!--graphql -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-graphql</artifactId>
+        </dependency>
         <dependency>
             <groupId>de.codecentric</groupId>
             <artifactId>spring-boot-admin-starter-client</artifactId>
diff --git a/dujy-admin/src/main/resources/application-dev.yml b/dujy-admin/src/main/resources/application-dev.yml
index ea6d08d..9eda0cc 100644
--- a/dujy-admin/src/main/resources/application-dev.yml
+++ b/dujy-admin/src/main/resources/application-dev.yml
@@ -26,6 +26,33 @@
 
 --- # 鏁版嵁婧愰厤缃�
 spring:
+  jpa:
+    show-sql: true
+    generate-ddl: true
+    open-in-view: false
+    hibernate:
+      ddl-auto: validate
+    properties:
+      hibernate:
+        format_sql: true
+
+  graphql:
+    path: /graphql
+    graphiql:
+      enabled: true
+      path: /graphiql
+    cors:
+      allow-credentials: true
+      allowed-headers: '*'
+      allowed-methods: '*'
+    schema:
+      locations:
+        - classpath*:graphql/
+      file-extensions:
+        - .graphql
+        - .gqls
+      printer:
+        enabled: true
   datasource:
     type: com.zaxxer.hikari.HikariDataSource
     # 鍔ㄦ�佹暟鎹簮鏂囨。 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
diff --git a/dujy-admin/src/main/resources/application-prod.yml b/dujy-admin/src/main/resources/application-prod.yml
index 148b50e..6be40ec 100644
--- a/dujy-admin/src/main/resources/application-prod.yml
+++ b/dujy-admin/src/main/resources/application-prod.yml
@@ -29,6 +29,34 @@
 
 --- # 鏁版嵁婧愰厤缃�
 spring:
+  jpa:
+    show-sql: true
+    generate-ddl: true
+    open-in-view: false
+    hibernate:
+      ddl-auto: validate
+    properties:
+      hibernate:
+        format_sql: true
+
+  graphql:
+    path: /graphql
+    graphiql:
+      enabled: true
+      path: /graphiql
+    cors:
+      allow-credentials: true
+      allowed-headers: '*'
+      allowed-methods: '*'
+    schema:
+      locations:
+        - classpath*:graphql/**/
+      file-extensions:
+        - .graphqls
+        - .gqls
+      printer:
+        enabled: true
+
   datasource:
     type: com.zaxxer.hikari.HikariDataSource
     # 鍔ㄦ�佹暟鎹簮鏂囨。 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
diff --git a/dujy-common/dujy-common-redis/src/main/java/org/dromara/common/redis/handler/KeyPrefixHandler.java b/dujy-common/dujy-common-redis/src/main/java/org/dromara/common/redis/handler/KeyPrefixHandler.java
index 3bf3e34..de921fb 100644
--- a/dujy-common/dujy-common-redis/src/main/java/org/dromara/common/redis/handler/KeyPrefixHandler.java
+++ b/dujy-common/dujy-common-redis/src/main/java/org/dromara/common/redis/handler/KeyPrefixHandler.java
@@ -1,5 +1,6 @@
 package org.dromara.common.redis.handler;
 
+
 import org.dromara.common.core.utils.StringUtils;
 import org.redisson.api.NameMapper;
 
diff --git a/dujy-modules/dujy-demo/pom.xml b/dujy-modules/dujy-demo/pom.xml
index 72f9d18..5d233dd 100644
--- a/dujy-modules/dujy-demo/pom.xml
+++ b/dujy-modules/dujy-demo/pom.xml
@@ -22,7 +22,16 @@
             <groupId>org.dujy</groupId>
             <artifactId>dujy-common-core</artifactId>
         </dependency>
-
+        <!-- jpa -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <!--graphql -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-graphql</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.dujy</groupId>
             <artifactId>dujy-common-doc</artifactId>
@@ -102,6 +111,14 @@
             <groupId>org.dujy</groupId>
             <artifactId>dujy-common-websocket</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.graphql</groupId>
+            <artifactId>spring-graphql</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.graphql</groupId>
+            <artifactId>spring-graphql</artifactId>
+        </dependency>
 
     </dependencies>
 
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/TestJPAController.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/TestJPAController.java
new file mode 100644
index 0000000..d671395
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/TestJPAController.java
@@ -0,0 +1,25 @@
+package org.dromara.demo.controller;
+
+import org.dromara.demo.domain.Student;
+import org.dromara.demo.service.IStudentRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.graphql.data.method.annotation.Argument;
+import org.springframework.graphql.data.method.annotation.QueryMapping;
+import org.springframework.stereotype.Controller;
+
+@Controller
+public class TestJPAController {
+    @Autowired
+    private IStudentRepository studentRepository;
+
+
+    @QueryMapping
+    public void addStudent(@Argument Student student){
+        studentRepository.save(student);
+    }
+    @QueryMapping
+    public Student getStudent(@Argument Long id){
+        return studentRepository.findById(id).orElse(null);
+    }
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/Student.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/Student.java
new file mode 100644
index 0000000..2383842
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/Student.java
@@ -0,0 +1,22 @@
+package org.dromara.demo.domain;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Entity
+@Table(name = "t_student_demo")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Student {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY) // 涓婚敭鑷闀�
+    @Column(name = "id")
+    private Long id;
+    @Column(name = "name")
+    private String name;
+    @Column(name = "age")
+    private Integer age;
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IStudentRepository.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IStudentRepository.java
new file mode 100644
index 0000000..de2713a
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IStudentRepository.java
@@ -0,0 +1,10 @@
+package org.dromara.demo.service;
+
+import org.dromara.demo.domain.Student;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface IStudentRepository extends CrudRepository<Student,Long> {
+}
diff --git a/dujy-modules/dujy-demo/src/main/resources/graphql/schema.graphql b/dujy-modules/dujy-demo/src/main/resources/graphql/schema.graphql
new file mode 100644
index 0000000..de251cd
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/resources/graphql/schema.graphql
@@ -0,0 +1,5 @@
+
+
+type Query{}
+
+type Mutation{}
diff --git a/pom.xml b/pom.xml
index 439936c..1709403 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,7 +91,6 @@
     <!-- 渚濊禆澹版槑 -->
     <dependencyManagement>
         <dependencies>
-
             <!-- SpringBoot鐨勪緷璧栭厤缃�-->
             <dependency>
                 <groupId>org.springframework.boot</groupId>

--
Gitblit v1.8.0