1、导入Graphql核心依赖
<!--Graphql 的 SpringBoot 启动器-->
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>5.10.0</version>
</dependency>
<!--playground 服务器 用来测试Graphql接口-->
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>playground-spring-boot-starter</artifactId>
<version>5.10.0</version>
</dependency>
注意点:这里还需引入spring-boot-starter-web启动器
2、修改SpringBoot的kotlin版本号,否则会启动报错(注意这里必须修改)
image.png这里我使用了最新的Spring-Boot依赖
3、目录结构说明
image.png1、 entity包存放的是实体类
2、 resolve包存放的是graphql定义的接口
3、 resources下面的graphql 存放的是graphql定义的类型和方法
其他就没有什么重点了就不说了 大家应该都懂的
4、开始使用Graphql
1.创建实体类
public class Empregado {
private Long id;
private String nome;
private Integer idade;
private Date nascimento;
private List<Projeto> projetos;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Integer getIdade() {
return idade;
}
public void setIdade(Integer idade) {
this.idade = idade;
}
public Date getNascimento() {
return nascimento;
}
public void setNascimento(Date nascimento) {
this.nascimento = nascimento;
}
public List<Projeto> getProjetos() {
return projetos;
}
public void setProjetos(List<Projeto> projetos) {
this.projetos = projetos;
}
@Override
public String toString() {
return "Empregado{" +
"id=" + id +
", nome='" + nome + '\'' +
", idade=" + idade +
", nascimento=" + nascimento +
", projetos=" + projetos +
'}';
}
}
public class Projeto {
private Long id;
private String nome;
private Integer codigoServico;
private String responsavel;
private Date prazo;
private Empregado empregado;
//gets e sets
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Integer getCodigoServico() {
return codigoServico;
}
public void setCodigoServico(Integer codigoServico) {
this.codigoServico = codigoServico;
}
public String getResponsavel() {
return responsavel;
}
public void setResponsavel(String responsavel) {
this.responsavel = responsavel;
}
public Date getPrazo() {
return prazo;
}
public void setPrazo(Date prazo) {
this.prazo = prazo;
}
public Empregado getEmpregado() {
return empregado;
}
public void setEmpregado(Empregado empregado) {
this.empregado = empregado;
}
@Override
public String toString() {
return "Projeto{" +
"id=" + id +
", nome='" + nome + '\'' +
", codigoServico=" + codigoServico +
", responsavel='" + responsavel + '\'' +
", prazo=" + prazo +
", empregado=" + empregado +
'}';
}
}
2.创建graphql解析的接口
@Component
public class Mutation implements GraphQLMutationResolver {
public boolean deletarEmpregado(Long id) {
System.out.println("删除了" + id);
return true;
}
}
@Component
public class Query implements GraphQLQueryResolver {
public List<Empregado> obterEmpregados() {
List<Empregado> empregados = new ArrayList<>();
Empregado empregado = new Empregado();
empregado.setId(1L);
empregado.setIdade(123);
empregado.setNascimento(new Date());
empregado.setNome("slayer");
empregados.add(empregado);
return empregados;
}
}
这里有个重要的注意点 :
GraphQLQueryResolver 定义的是数据查询的方法接口
GraphQLMutationResolver 定义的是数据增删改的方法接口
3、配置文件(application.yml)
graphql:
servlet:
mapping: /graphql #接口的路径
exception-handlers-enabled: true
4、Graphql配置文件(schema.graphqls)
#定义实体类类型
type Empregado {
id: ID!
nome: String!
idade: Int!
nascimento: String @date
projetos: [Projeto]!
}
type Projeto {
id: ID!
nome: String!
codigoServico: Int!
responsavel: String!
prazo: String! @date
}
#定义查询的方法
type Query {
obterEmpregados: [Empregado]!
}
#定义增删改的方法
type Mutation {
deletarEmpregado(id: Int!) : Boolean
}
完成以上配置之后 启动服务器 输入http://localhost:8080/playground 则会看到一个这样子的页面
image.png输入查询语句
query {
obterEmpregados{
id
nome
idade
nascimento
}
}
image.png
网友评论