02. GraphQL - Project Creation


Created project GitHub Link -

https://github.com/LahiruPriyankara/graphQL 

Create spring boot project by adding bellow dependencies.


application.property

server.port=2020

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/graphql?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=root
#spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

spring.graphql.graphiql.enabled=true
spring.graphql.schema.printer.enabled=true
#spring.graphql.cors.allowed-origins=*

schema.graphqls

type Student {

    id: ID!

    firstName: String

    lastName: String

    age: Int

    gender: Gender

    studentClass: StudentClass

}

 

enum Gender{

    MALE,

    FEMALE

}

 

type StudentClass {

    id: ID!

    grade: String

    teacherName: String

    students: [Student]

}

 

type Query {

    allStudent: [Student]!

    findStudent(id: ID!): Student

    allStudentClass: [StudentClass]!

    findStudentClass(id: ID!): StudentClass

    allStudentClassPage(page: Int!, size: Int!): [StudentClass]!

}

 

type Mutation {

    createStudentClass(grade: String!,teacherName: String!): StudentClass!

    updateStudentClass(id: ID!,grade: String!,teacherName: String!): StudentClass!

    deleteStudentClass(id: ID!): Boolean!

}

 

 

Schema define කිරීමේදී පහත පරදී keyword use වේ.

Query - to retrieve data (Read).

Mutation - to change the data (Create, Update, Delete).

Subscription - Which allows to create a connection to read data and keep that connection for when data changes (15.00). 


Controller layer

01.Query

@SchemaMapping(typeName = "Query", value = "allStudentClass")
  // @QueryMapping
  public List<StudentClass> allStudentClass() {
    return studentClassService.allStudentClass();
  }

If it is query and we give method name as query value, then we can simply use.

@QueryMapping 


Pagination

@QueryMapping
  public Page<StudentClass> allStudentClassPage(@Argument Integer page, @Argument Integer size) {

    PageRequest pageRequest = PageRequest.of(page, size);
    return studentClassService.allStudentClassPage(pageRequest);
 } 

02.Mutation

  @SchemaMapping(typeName = "Mutation", value = "createStudentClass")
  // @MutationMapping
  public StudentClass createStudentClass(@Argument String grade, @Argument String teacherName) {

    StudentClass studentClass =
        StudentClass.builder().grade(grade).teacherName(teacherName).build();

    return studentClassService.createStudentClass(studentClass);
  }

End.

Comments

Popular posts from this blog

09.Data Binding.

Database - Topics

02. Spring – Creating spring project clone it with GIT step by step.