System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,具体涉及一种基于模型自动化生成graphql接口代码的方法。
技术介绍
1、目前,传统业务crud的做法,其重复工作量大、代码规范不完全统一,比如说需要controler、service、mapper、repository的创建,这冗余且重复。通过数据模型生成graphql api,难以满足日常开发中的开发场景,提供常规的crud服,其开发效率也比较低下。
技术实现思路
1、本专利技术提供一种基于模型自动化生成graphql接口代码的方法,解决了开发效率低下的技术问题。
2、本专利技术提供的基础方案为:一种基于模型自动化生成graphql接口代码的方法,包括步骤:
3、s1、搭建好环境quarkus\hibernate\graphql\mapstruct,其中,quarkus是为openjdk和graalvm定制的kubernates云原生技术栈,hibernate是全orm框架,graphql是api查询语言,mapstruct是映射关系处理器;
4、s2、定义模型models,类型加上注解@sterotypeentity;
5、s3、标记注解并进行细粒度控制;
6、s4、编译服务,基于java annotation processor tool通过java spi机制在编译期获取自定义处理器stereotypeentityprocessor,所有的逻辑从process出发,先过滤类注解再处理字段注
7、s5、启动服务,通过quarkusdev启动服务,通过graphql访问服务生成的接口。
8、进一步,s2中,注解通过属性creatable、updatable、deletestrategy控制是否生成创建方法、更新方法以及是否生成删除方法。
9、进一步,s2中,删除方法包括物理删除方法与逻辑删除方法。
10、进一步,s2中,一个entiy对应生成一个graphqlapi接口。
11、进一步,s3中,采用query接口,@filterable标记字段作为查询条件,将查询条件封装到单独一个filte类中,作为list的request body。
12、进一步,s3中,默认模糊查询,需要精确查询时,配置注解@equal,需要生成list<id>查询条件时,配合注解@id。
13、进一步,s3中,采用mutation接口,通过注解@inputcolumn控制用户可操作字段,通过注解@defaultdenum控制枚举默认值。
14、进一步,s3中,通过注解@column(unique=true)对字段进行唯一性校验,通过给类添加注解@check对写入数据的自定义校验逻辑。
15、本专利技术的工作原理及优点在于:本方案基于数据模型、quarkus、hibernate、graphql、java注解处理器,实现一套只需要定义model通过编译就可以生成对应的graphqlapi的query\mutation的方法,这是一种模型到接口的方法,首先在模型entity上面标记注解@sterotypeentity,表示改模型是需要生成对应的graphql接口,其中可以控制对应的删除、创建、修改功能,其次,本方案可以对字段进行控制,包括精确查询、模糊查询、列表查询、嵌套查询,是否可以修改、新增等操作,最后,本方案通过注解处理器在java编译期间解析注解,通过编写字节码实现对应的类、方法的输出,这样通过数据模型生成graphql api,可以满足日常开发中80%以上的开发场景,提供常规的crud服务,重复工作量小,没有冗余与重复,开发效率高。
16、本专利技术将常规的crud的开发解放出来,只需要定义好模型和注解配置,即可实现相应的功能,高效方便快捷,极大的提高了开发效率。
本文档来自技高网...【技术保护点】
1.一种基于模型自动化生成graphql接口代码的方法,其特征在于,包括步骤:
2.如权利要求1所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,S2中,注解通过属性creatable、updatable、deleteStrategy控制是否生成创建方法、更新方法以及是否生成删除方法。
3.如权利要求2所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,S2中,删除方法包括物理删除方法与逻辑删除方法。
4.如权利要求3所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,S2中,一个Entiy对应生成一个GraphqlApi接口。
5.如权利要求4所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,S3中,采用Query接口,@Filterable标记字段作为查询条件,将查询条件封装到单独一个Filte类中,作为List的request Body。
6.如权利要求5所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,S3中,默认模糊
7.如权利要求6所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,S3中,采用Mutation接口,通过注解@InputColumn控制用户可操作字段,通过注解@DefaultDenum控制枚举默认值。
8.如权利要求7所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,S3中,通过注解@Column(unique=true)对字段进行唯一性校验,通过给类添加注解@Check对写入数据的自定义校验逻辑。
...【技术特征摘要】
1.一种基于模型自动化生成graphql接口代码的方法,其特征在于,包括步骤:
2.如权利要求1所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,s2中,注解通过属性creatable、updatable、deletestrategy控制是否生成创建方法、更新方法以及是否生成删除方法。
3.如权利要求2所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,s2中,删除方法包括物理删除方法与逻辑删除方法。
4.如权利要求3所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,s2中,一个entiy对应生成一个graphqlapi接口。
5.如权利要求4所述的一种基于模型自动化生成graphql接口代码的方法,其特征在于,s3中,采用query接口,@filterable标记字段作...
【专利技术属性】
技术研发人员:梅竹,凌海,莫彬,苏迪,
申请(专利权)人:盛宝金融科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。