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