一种用于访问数据库的前后端代码文件的生成方法及装置与流程

文档序号:29498803发布日期:2022-04-06 16:33阅读:190来源:国知局
1.本技术实施例涉及金融科技(fintech)领域,尤其涉及一种用于访问数据库的前后端代码文件的生成方法及装置。
背景技术
::2.随着计算机技术的发展,越来越多的技术(例如:云计算、大数据或区块链)应用在金融领域,传统金融业正在逐步向金融科技转变。例如,对于银行的财务部门而言,若仅通过人力制作税务相关的报表,这对于当下存在海量数据的大环境来说显然无法满足需求,因此银行普遍需要开发对应的柜面系统、以进行税务的统计计算与申报。其中,由于纳税申报一般存在税种多、申报表样复杂和数据种类繁杂的特点,如此就某一种税种而言,其所涉及的统计数据表和各种计算表数量就很惊人。一般情况下,数据库中的一张数据表对应于前端一个页面,在开发人员设计好用于实现柜面系统的各数据库表结构后,仍需要开发人员手动编写以下与各数据库表对应的前后端代码文件,包括:与数据库表对应的数据传输对象(datatransferobject,dto)文件、操作数据库接口的mapper文件、为后端接口提供实际业务实现的service文件、提供后端接口的controller文件、提供前端样式和操作页面的vue文件。3.鉴于数据库表结构复杂、表数量庞大的因素,上文描述的依赖于开发人员手动编写柜面系统的前后端代码文件的方式不仅显得繁琐,也容易出错。为此,开发人员目前会使用一些自动代码生成工具以进行前后端代码文件的生成,常见的有以下几种:4.mybatis-generator,是mybatis专用的自动代码生成工具。在提供对应数据库的配置信息和表信息后,可以根据数据库中表结构自动生成mabytis执行所需的代码,如mapper.java、mapper.xml和dto文件。5.mybatis-plusgenerator,是mybatis升级版的自动代码生成工具。在mybatis-generator的基础上,还可生成controller和service接口、serviceimpl文件,可指定各个文件的包路径。6.对前端代码的自动生成,vscode提供插件可以生成空白vue模板,以及,目前市面上也有一些拖拽操作类的页面生成工具。7.但是,上述基于自动代码生成工具而生成前后端代码文件的方案,存在以下缺点:8.1、目前的自动代码生成工具,为了满足通用性,使用都会比较复杂。比如mybatis-generator需要使用xml文件配置,以及需要为每张数据库表对应的文件指定路径和类名,且只能生成框架部分代码。此外,应用于前端的拖拽式自动代码生成工具在使用时,需要开发人员手动输入所需各个字段,这显然对税务系统的各种宽表非常不友好。9.2、目前的自动代码生成工具,尚且只能根据表的字段名和字段类型生成基础代码,而对表信息中提供的字段限制、空性、主键、索引等信息,未进行充分处理,以及一些数据校验、柜面系统通用的文件操作等仍需要开发人员手工编写代码,大量的重复性工作降低了开发效率。10.因此,目前亟需一种高效的自动生成针对于柜面系统的前后端代码文件的方法。技术实现要素:11.本技术提供一种用于访问数据库的前后端代码文件的生成方法及装置,用以高效的自动生成针对于柜面系统的前后端代码文件。12.第一方面,本技术实施例提供一种用于访问数据库的前后端代码文件的生成方法,该方法包括:读取数据库配置文件;所述数据库配置文件包括数据库连接信息和各数据表的表配置信息;其中,表配置信息设置有用于生成数据表的前后端代码文件的各配置信息;针对所述各数据表中的任一数据表,通过所述数据库连接信息,获取所述数据表的表描述信息;其中,表描述信息设置有描述数据表的各属性信息;根据所述数据表的表配置信息和所述数据表的表描述信息,创建所述数据表的表视图对象;所述表视图对象中包括各列视图对象,至少一个列视图对象中包括列字段的注解信息,所述注解信息用于对列字段在前后端交互过程中的字段值设置限制;根据所述表视图对象和预置的前后端代码模板,生成针对于所述数据表在前后端的各代码文件。13.上述方案中,对于一个业务系统,在开发人员完成基本的数据库表设计后,即针对任一张数据库表设计了对应的表描述信息,那么可通过简单的配置(包括数据库配置文件和表配置信息)生成项目所需的所有基础代码,不仅涵盖了通用的数据库操作的代码,还可以根据数据库字段的具体设计、注释信息、索引设计等生成对应的校验注解,枚举值检验,按索引增删改查操作等代码。极大的减轻了开发人员的工作量,缩短了业务系统的开发周期。14.在一种可能实现的方法中,所述根据所述数据表的表配置信息和所述数据表的表描述信息,创建所述数据表的表视图对象,包括:创建初始的表视图对象;所述初始的表视图对象包括多个待定成员;针对所述多个待定成员中的列成员中的任一列字段,创建所述列字段的列视图对象;若所述数据表的表描述信息和/或所述数据表的表配置信息中具有所述列字段的注解信息,则将所述注解信息对应的指示增加至所述列视图对象中,从而生成所述数据表的表视图对象。15.上述方案中,通过创建表视图对象,则可以获取到用于业务系统构建的各个数据表的全部信息;尤其通过为表视图对象中的列成员中任一个列字段创建列视图对象,则可以在获取到该列字段的注解信息后,将所获取的注解信息增加到的对应的列视图对象中,如此可以在生成前后端代码文件时为需要被特殊设置的字段自动注入相应的注解,比如可以满足对字段空性的设置、进行字段校验、字段值枚举的需求。16.在一种可能实现的方法中,所述将所述注解信息对应的指示增加至所述列视图对象中,包括:若从所述数据表的表描述信息中获取到所述列字段的字典信息,则在所述列视图对象中增加字典注解指示,并将所述字典注解指示和所述字典信息添加至数据字典中;所述字典注解指示用于从所述数据字典中获取所述列字段的字典信息。17.上述方案中,对于数据库中的一些数据表当中的某些字段,业务系统使用的许多复杂中文描述会以固定编码形式存储在数据库中,仅在前端显示转换为对应的描述信息。对于该类字段,本方案中预设在数据库表的表描述信息的字段注释中以{枚举值1-含义,枚举值2-含义,枚举值3-含义}的格式注明,从而在遍历字段信息中的注释信息时若发现如上述格式的字符串时,则表示需要在该字段对应的列视图对象中增加对该字段的注解,即增加字典注解指示,进而在对该字段进行使用时,就可以基于用户输入的描述信息对应转换为在数据库中进行存储的枚举值,以及将数据库中存储的枚举值转换成用户在查询后所能够理解的描述信息。18.在一种可能实现的方法中,所述将所述注解信息对应的指示增加至所述列视图对象中,包括:若从所述数据表的表描述信息中获取到所述列字段的索引信息,则在所述列视图对象中增加索引注解指示;其中,若所述索引信息为主键索引,则在所述表视图对象中设置主键策略成员的信息。19.上述方案中,对于数据库中的任一数据表,可以通过多个字段来展示该数据表需要向外传递出的信息,而该些字段在填充相应的值的时候,又将需要符合相关的要求。针对各字段所设置的要求,可表现为对表视图对象中的各列视图对象的信息进行完善,针对任一字段,除了可以读取该字段在数据表中的表描述信息,并将所获取到的事先对该字段进行要求配置的注解写在该字段对应的列视图对象中,具体地可以写在列视图对象的注解列表中,还包括从表描述信息中的索引信息的角度出发,确定同名字段的注解是否还可以进一步完善,从而每一个字段对应的列视图对象中的字段注解将是最完善的,后续基于表视图对象而生成的数据表在前后端的代码文件在应用的时候,将可以实现让数据表中的各个字段达到业务系统开发人员在数据表设计时的各预期功能。20.在一种可能实现的方法中,所述将所述注解信息对应的指示增加至所述列视图对象中,包括:若从所述数据表的表描述信息和/或所述数据表的表配置信息中获取到所述列字段的校验信息,则在所述列视图对象中增加校验注解指示;所述校验注解指示用于指示所述列字段的检验类。21.上述方案中,对于数据库中的任一数据表,可以通过多个字段来展示该数据表需要向外传递出的信息,而该些字段在填充相应的值的时候,又将需要符合相关的要求,如是否为空,是否支持上传、下载、用于计算的功能,或者开发人员自定义的其他字段校验的规则。因此,在对表视图对象中的各列视图对象进行信息的完善的时候,针对任一字段,除了可以读取该字段在数据表中的表描述信息,并将所获取到的事先对该字段进行要求配置的注解写在该字段对应的列视图对象中,具体地可以写在列视图对象的注解列表中,还包括从数据表的表配置信息的角度出发,确定同名字段的注解是否还可以进一步完善,从而每一个字段对应的列视图对象中的字段注解将是最完善的,后续基于表视图对象而生成的数据表在前后端的代码文件在应用的时候,将可以实现让数据表中的各个字段达到业务系统开发人员在数据表设计时的各预期功能。22.在一种可能实现的方法中,所述根据所述表视图对象和预置的前后端代码模板,生成针对于所述数据表在前后端的各代码文件,包括:通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端dto文件模板,生成后端dto代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端pojo文件模板,生成后端pojo代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端mapper文件模板,生成后端mapper代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端service文件模板,生成后端service代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的连接前后端的controller文件模板,生成前后端controller代码文件。23.上述方案中,针对数据库中的一数据表,由于需要填入代码文件的关键信息已经可以通过表视图对象进行封装,以及一些依赖的相关类在jar中已经被提供,因此可通过使用模板引擎,即将每份文件需要的基本数据模型传入模板引擎的接口,即可生成该数据表在前后端的各代码文件。24.在一种可能实现的方法中,所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端dto文件模板,生成后端dto代码文件,包括:针对每个列视图对象,基于后端dto文件模板,在所述列视图对象的主键字段与表视图对象的主键字段一致时,生成具有主键注解的后端dto代码;针对具有取值约束的字段,生成具有取值注解的后端dto代码;针对具有字典注解指示的字段,生成具有字典注解指示的后端dto代码;所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端pojo文件模板,生成后端pojo代码文件,包括:针对表视图对象中的索引注解指示,通过后端pojo文件模板,生成具有索引信息的后端pojo代码;所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端mapper文件模板,生成后端mapper代码文件,包括:针对表视图对象中的索引注解指示,通过后端mapper文件模板,生成具有索引信息的数据库操作的后端mapper代码;所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端service文件模板,生成后端service代码文件,包括:针对表视图对象中的索引注解指示和表视图对象中的上传下载功能指示,通过后端service文件模板,生成具有索引信息和上传下载功能的后端service代码;所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的连接前后端的controller文件模板,生成前端controller代码文件,包括:针对表视图对象中的上传下载功能指示,通过连接前后端的controller文件模板,生成具有http接口的前后端controller代码。25.上述方案中,具体阐述了对一数据表在前后端的各代码文件进行生成的方法,最终通过运行该数据表在前后端的各代码文件,将可以实现该数据表在前后端的自动生成,而该自动生成的数据表可以满足业务系统开发人员对该数据所作出的通用限制的要求以及对该数据表中的某些字段所作出的个性化限制的要求。26.第二方面,本技术实施例提供一种用于访问数据库的前后端代码文件的生成装置,该装置包括:读取单元,用于读取数据库配置文件;所述数据库配置文件包括数据库连接信息和各数据表的表配置信息;其中,表配置信息设置有用于生成数据表的前后端代码文件的各配置信息;获取单元,用于针对所述各访问数据表中的任一数据表,通过所述数据库连接信息,获取所述数据表的表描述信息;其中,表描述信息设置有描述数据表的各属性信息;创建单元,用于根据所述数据表的表配置信息和所述数据表的表描述信息,创建所述数据表的表视图对象;所述表视图对象中包括各列视图对象,至少一个列视图对象中包括列字段的注解信息,所述注解信息用于对列字段在前后端交互过程中的字段值设置限制;生成单元,用于根据所述表视图对象和预置的前后端代码模板,生成针对于所述数据表在前后端的各代码文件。27.第三方面,本技术实施例提供了一种计算设备,包括:28.存储器,用于存储程序指令;29.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面任一实现方法。30.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一实现方法。附图说明31.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。32.图1为本技术实施例提供的一种实现自动生成前后端代码文件的流程示意图;33.图2为本技术实施例提供的一种表视图对象的构建过程的示意图;34.图3为本技术实施例提供的一种用于访问数据库的前后端代码文件的生成方法的示意图;35.图4为本技术实施例提供的一种用于访问数据库的前后端代码文件的生成装置的示意图;36.图5为本技术实施例提供的一种计算设备的示意图。具体实施方式37.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。38.以银行的财务部门为例,其在对国家规定的税务相关的报表数据进行制作的过程中,可以通过构建柜面系统来进行各种申报表的制作,从而极大程度上对原本需要手动制作申报表的相关财务人员进行了减负。然而,对于目前的通过对基于自动化代码生成工具所生成的对应于柜面系统的前后端代码进行运行、从而生成柜面系统的方案,其尚且无法对数据表中的一些需要被特殊定义的字段作出相应的用户想要的设置,导致所生成的柜面系统所实现的功能比较单一。换句话说,对于基于自动化代码生成工具所生成的前后端代码进行运行后而产生的柜面系统,该柜面系统目前并不能很好地与业务场景需求进行结合。39.针对上述技术问题,本技术提供了下述的方案。基于该方案,可以达到克服上述技术问题的效果。40.例如,以银行的财务部门为例,进行税务申报是相关财务人员的工作内容之一。比如,财务人员通过使用设计出的柜面系统,就可以达到计算税局要求的各种申报表的目的。其中,申报表的计算是通过对一定周期内采集的基础明细数据,进行一系列复杂操作得出的;同时,为了满足对账需要和相关税法要求,还需要对申报表各个模块数据保存一套中间表,该中间表用于记录计算过程的中间结果数据。因此,从数据演变的角度出发,可以对数据库中的各数据表进行分类,包括采集数据表、中间结果表和有效结果表。41.由于用于实现柜面系统的数据库中所存储的数据表的类型较多,因此从业务层面出发,银行方希望该柜面系统所能够实现的功能至少可包括以下几种:42.1、对录入信息的检验提示:如必填项、字段格式要求,数据范围要求等;43.2、对录入信息的维护:支持单条的录入、修改、删除,以及文件形式的批量录入;44.3、对业务信息的多途径展示:页面展示、附件导出、邮件通知等,以及多条件查询;45.4、业务结果数据的生成、调整和重新计算。46.由于柜面系统对业务功能的实现,其实就是将业务操作转换成对数据库表变更的过程,因此,对于以上的希望柜面系统所能够实现的几个功能,将可以映射为对数据表的如下通用操作:47.1、数据写入时dto数据字段校验,包括非空校验、枚举值校验、数值范围校验、字符串长度校验、业务自定义校验;48.2、表数据的有条件查询、excel上传与导出;49.3、单条数据的有条件查询、新增、修改;50.4、按账期重算表数据;51.5、数据编码和显示文本的转换。52.在本技术实施例中,以柜面系统这一业务系统是基于java语言进行开发的为例,其中还将对需要开发的柜面系统做如下几点约束:53.1、库名、表名、字段、索引名统一使用小写字母、数字、下划线组合,禁止出现数字开头,禁止两个下划线中间只出现数字;54.2、主键索引名为pk_字段名、唯一索引名为uk_字段名、普通索引名为idx_字段名;55.3、数字类型禁止使用float和double,数字枚举值使用tinyintunsigned,其余类型使用decimal;56.4、数据库表、字段明细必须有注释;57.5、表必备三字段:id,created_by,created_date,last_modified_by,last_modified_date。id必为主键,支持bigintunsigned类型的自增主键和varchar类型的自定义主键。created_date、last_modified_date的类型均为timestamp(3)类型。created_by、last_modified_by为系统登录用户;58.6、枚举值字段,注释格式为“字段注释,{枚举值1-含义,枚举值2-含义,枚举值3-含义}”;59.7、有业务主键的设为表唯一键;60.8、同名字段的业务含义和录入数据格式必须一致,同一业务字段在不同表中应保持同字段名。61.基于以上的对待生成的柜面系统作出的约束,本技术提供了一种基于mybatis框架、springboot框架和vue框架的前后端代码文件的生成方法,该方法通过预先对一些文件进行配置以及设计好各种模板文件,则可以生成与数据库表相对应的、能够执行增删改查、上传下载、字段校验、显示转换和页面展示的前后端代码文件。62.针对构成柜面系统的任一数据表,如图1所示,为本技术实施例提供的一种实现自动生成前后端代码文件的流程示意图,包括以下步骤:63.步骤101、读取数据库配置文件。64.本步骤中,数据库配置文件可记作database.properties,数据库配置文件用于配置数据库连接信息和待生成的数据库表的信息。其中,database.properties的配置项目如下表1所示:65.字段说明diver_name数据库类型url数据库jdbc连接串username用户名password密码tables表名66.表1database.properties的配置项目67.其中,diver_name表示数据库的类型,url表示本次构建的柜面系统的数据来源,即需要用到的数据库的地址信息,username和password表示在对数据库进行使用时的身份验证信息,tables表示柜面系统所需要使用到的数据库中的相关数据表的表信息。其中,本技术实施例可提供如下两种对tables进行配置的方式:68.方式1:仅提供表名,其中使用指定分割符分割表名,各数据表的表配置信息以公共参数配置文件(config.properties)为准。如:69.tables=table_a,table_b,table_c70.方式2:通过配置json字符串,如此可为单张数据表指定参数,达到覆盖config.properties中的同名参数配置的效果。如:71.tables={table=table_a,db_table_id=org_id,webroot_package=../src/},{table=table_b,db_table_id=org_id}}72.其中,config.properties的配置项目如下:[0073][0074][0075]表2config.properties的配置项目[0076]对于config.properties中的db_filed_annotations这一配置项目:该配置项目用于配置字段和注解的映射关系。根据业务系统中同名字段的约束,可根据字段名添加指定注解,用于校验、数据同一处理等。其配置方式可为json字符串,一个字段可配置多个注解,生成注解的顺序以配置顺序为准。注解类支持hibernate-validator、javax.validation、springboot中的注解及本技术annotation包下的注解。如需其他路径下注解,可通过写明类的全路径实现。如柜面系统中经常以时间周期作为账期概念,常用的有月度账期、季度账期,对应monthperiod、quaterperiod字段必须满足一定格式,同时为实际存在的月份或季度,例如monthperiod字段下的值一定是对月份的表达,而不能是对年份的表达,以及所表达的月份一定是处于1月-12月这12个数值之间的,而不能是除去1-12这12个数值以外的数值,因此对于monthperiod字段,一方面需要设置它的月份表达的自定义限制,另一方面需要设置它是可以枚举出来的各月份的数值。如下所示的db_filed_annotations,可体现出monthperiod字段与自定义校验注解的关系:[0077]db_filed_annotations={filed=month_period,annotations=monthvalidate,enumvalidate}[0078]步骤102、读取数据库配置文件中的数据库表字段的信息,生成数据库表列表。[0079]也即,通过对表1中所示的tables字段对应的值进行读取,可生成数据库表列表。[0080]通过本步骤,可以对柜面系统所需要使用到的数据表做一个排序,按序为各数据表创建对应于它的初始的表视图对象,并通过完善各数据表的初始的表视图对象而得到数据表的表视图对象,如此后期在为每一个需要使用到的数据表生成对应于它的前后端代码文件的时候,就可以避免操作过程中对各数据表发生重复操作与漏操作的问题。[0081]步骤103、针对数据库表列表的任一数据表,基于该数据表的表名创建对应于该数据表的初始的表视图对象,并通过数据库配置文件获取该数据表的表配置信息和表描述信息,从而完善初始的表视图对象并得到该数据表的表视图对象。[0082]如图2所示,为本技术实施例提供的一种表视图对象的构建过程的示意图,其中,图2所示的表视图对象的构建过程为步骤103的各子步骤,即步骤103具体又可以包括图2所示的各步骤,内容如下:[0083]步骤3.1,利用jdbc连接(javadatabaseconnectivity,java数据库连接)查询该数据表是否存在;若确定存在,则执行步骤3.2;否则从数据库表列表中重新读取一张数据表,并对该新的数据表执行本步骤。[0084]步骤3.2,创建初始的表视图对象,即创建tablevo实例,并将该数据表的表配置信息中的bussi_package、webroot_package、templatepath、db_table_id、isupload、isexport和iscomputable信息分别写入tablevo中的对应待定成员。[0085]其中,为了将数据表在数据库的表描述信息和表配置信息转换为能够识别的对象信息,本技术设计了如下tablevo对象:[0086][0087][0088]其中,对于tablevo中的columnvo对象,即列视图对象,它可以用于存储字段信息,用于后续entity、pojo文件的生成:[0089][0090]其中,对于tablevo中的indexvo对象,即索引视图对象,它可以用于存储数据表的多索引信息:[0091][0092][0093]步骤3.3,利用jdbc连接查询information_schema.tables中该数据表的表描述信息,并将表名和表描述写入tablevo的对应成员。[0094]步骤3.4,利用jdbc连接查询information_schema.columns中该数据表的字段信息。[0095]步骤3.5,遍历字段信息,针对每个字段生成一个对应的columnvo对象,并挂在tablevo的column列表下。[0096]此外,在本步骤中,根据字段信息生成columnvo对象时,数据库类型和java类型可按如下映射进行转换:[0097]数据库类型java类型varcharjava.lang.stringlongtextjava.lang.stringbigintjava.lang.integerdatetimejava.util.dateintjava.lang.integerdecimaljava.math.bigdecimaltinyintjava.lang.integerblobbyte[]smallintjava.lang.integertextjava.lang.stringtimestampjava.util.datedatejava.util.date[0098]步骤3.6,确定columnvo.fieldcomment是否包含{枚举值1-含义1,枚举值2-含义2,枚举值3-含义3}格式的字符串。若确定包含,则执行步骤3.7,否则执行步骤3.12。[0099]其中,业务系统使用的许多复杂中文描述会以固定编码形式存储在数据库中,仅在前端显示转换为对应的描述信息。比如对于性别字段,用户在前端输入时可以编辑“男/女”,而后端在对用户输入的字段值进行数据库存储时,则可以使用对应的编码形式进行存储,而并非以用户实际输入的值进行存储,如预设使用数字“0”表示性别男,使用数字“1”表示性别女,如此在对性别字段的值进行存储的时候,可以按照“0/1”进行存储。该类字段在本方案中要求在数据库表的列注释中以{枚举值1-含义,枚举值2-含义,枚举值3-含义}的格式注明。[0100]对于以上描述的数据转换的场景,本技术实施例提供了数据字典的设计,其中:在数据库中设计两张表,分别为数据字典表和数据字典明细表,用于存储每种数据字典的映射关系。其中,数据字典表如表3所示,数据字典明细表如表4所示。[0101]字段说明dict_name字典名称dict_code字典编码[0102]表3数据字典表[0103]字段说明dict_code字典编码item_value字典项值item_text字典项文本[0104]表4数据字典明细表[0105]设计了注解类@dict。作用于字段(field)上,标注需要进行数据字典转换的field。提供以下注解参数,可指定数据字典编码、字典项文本。[0106]stringdiccode();[0107]stringdictext()default"";[0108]在服务器后端,在需要对返回值进行数据字典转换的接口(一般为controller上的接口)上定义aop切点,使用[0109]@around("dictpointcut()")[0110]publicobjectaround(proceedingjoinpointpjp)[0111]拦截接口的内部实现。pjp.proceed()获取接口原本的返回值,通过解析该返回对象,获取到对象t。抓取t的所有成员变量,对包含@dict注解的成员,获取注解中的dictcode,从数据库中查询到{item_value,item_text}的映射关系,将成员存储的item_value转换为item_text,追加到t的成员中。此外,前端频繁查询大量数据时,若每次从数据库查字典信息,将会大量增加查询时间,为此,本技术实施例中可将字典信息存储在jvm内存中,仅需要在数据库字典信息变动时主动刷新jvm中的字典信息。[0112]在服务器前端,为了将用户输入或选择的text转换为value值,本技术实施例提供了字典专用控件jdictselecttag,对vue原生的select控件进行封装,通过增加prop选项dictcode,用于指定数据字典,如此,select-option中对用户展示item_text值,用户操作后发送至服务器后端的值是item_value。[0113]步骤3.7,在columnvo的annotations中追加数据字典@dict注解。[0114]本步骤中通过将@dict注解写入该字段columnvo对应的注解列表annotations中,那么后续步骤104在生成该数据表对应的entity文件时,可在字段${po.fieldname}上追加注解@dict(dictcode=”dict_${po.fieldname}”)和枚举值校验注解@enumvalid(target=${po.fieldname}enum.class);以及,在生成该数据表对应的vue文件时,${po.fieldname}对应的表单项内部控件,会用jdictselecttag取代select控件,自动提供字典项的下拉选择。[0115]步骤3.8,根据columnvo字段名、字段注释生成同名数据字典项dict_name、dict_code,拼接该数据字典项写入数据字典表的insert语句。[0116]步骤3.9,将{枚举值1-含义1,枚举值2-含义2,枚举值3-含义3}映射成数据字典明细(item_value=枚举值1,item_text=含义1,item_value=枚举值2,item_text=含义2,item_value=枚举值3,item_text=含义3),拼接该数据字典明细写入数据字典明细表的insert语句。[0117]对于步骤3.8和步骤3.9,为本技术实施例中提出的对数据字典进行实现的一种方式:也即若在步骤3.6中,若检测到columnvo.fieldcomment中包含形如{枚举值1-含义1,枚举值2-含义2,枚举值3-含义3}格式的字符串,则判定该字段需要提供数据字典功能。假设字段名为${fieldname},则步骤3.8和步骤3.9中为该字段拼接出的dml语句如下所示:[0118]insertintosys_dict[0119](dict_code,dict_name)values(‘dict_${fieldname}’,’filedcomment’);[0120]insertintosys_dict_item(dict_code,item_value,item_text)values[0121](‘dict_${fieldname}’,’含义1’,’枚举值1’),[0122](‘dict_${fieldname}’,’含义2’,’枚举值2’);[0123]步骤3.10,将insert写入工程路径下的dml.sql文件。[0124]步骤3.11,读取枚举类模板文件,传入fieldname和枚举值列表,生成enum类文件,保存在项目工程的./com/weebank/enum/路径下。[0125]在本步骤中,从系统指定路径下读取如下枚举类模板文件,并将根据注释初始化的sys_dict_item列表和filename作为参数传入模板文件,即可生成${fieldname}enum.java文件。[0126][0127]步骤3.12,确定tablevo.isupload或isexport是否为ture。若确定为ture,则执行步骤3.13,否则执行步骤3.5。[0128]步骤3.13,在columnvo的annotations中追加@excel注解。[0129]步骤3.14,确定columnvo的nullable是否为ture。若确定为ture,则执行步骤3.15,否则执行步骤3.5。[0130]步骤3.15,根据fieldtype,在columnvo的annotations中追加notnull注解。[0131]步骤3.16,在完成对字段信息的遍历后,利用jdbc连接查询information_schema.statistics中该数据表的索引信息。[0132]步骤3.17,遍历索引信息,针对每个索引的index_name、index_comment生成一个对应的indexvo对象,即索引视图对象,并挂在tablevo的index列表下。[0133]本步骤中在遍历索引时,若该索引类型为primary主键索引,则将tablevo的primarykeyfield设为该索引的字段。若该主键字段类型为int、bigint且字段额外信息为auto_increment,则tablevo的主键策略primarykeypolicy设为idtype.auto,否则为idtype.input。在后续步骤104生成entity文件时,根据primarykeyfield和primarykeypolicy,在主键字段对应的成员上追加tableid注解,并设置tableid注解策略。[0134]步骤3.18,读取该索引的所有colunmn_name,在tablevo.colunmns列表里查找同名的column,挂在indexvo.column列表下。[0135]步骤3.19,确定该字段database.properties中是否配置了da_field_annotations。如果确定是配置了,则执行步骤3.20,否则重新遍历索引信息并执行步骤3.17。[0136]柜面系统中,前后端交互的数据以定义好的entity对象的格式传输,数据的校验和转换都可以通过在entity对象上添加成员注解实现。数据的转换可通过前文所述的数据字典方案实现,在对应字段上添加@dict注解。数据的校验也可通过成员注解实现:[0137]1、controller层抓取到entity对象后,解析对象里每个成员对象是否存在校验注解。[0138]2、找到校验注解指定的校验实现类。[0139]3、将成员的值传递给校验实现类,调用校验方法后,返回校验结果。[0140]entity对象对应一张数据库表,对象的成员如果存在非空、非null等约束,在该对象对应的数据库表结构中也会设置对应约束。java校验包为此提供了notblank、notnull等常用校验注解。除了从数据库表结构里可以提取到的校验信息外,本方案提供了自定义的数据校验。可根据某数据列的业务含义,设置对应的特殊注解。如申报系统中经常以时间周期作为账期概念,常用的有月度账期、季度账期,对应monthperiod、quaterperiod字段必须满足一定格式同时为实际存在的月份或季度。此时可定义@monthperiod、@quarterperiod自定义校验接口。[0141]对于自定义校验接口的实现,如步骤3.14中若监测到该数据表的某个字段在数据库存在非null约束时,自动为其columnvo对象注入notblank等注解;在步骤3.19若检测到该数据表在数据库配置文件中有对应的db_field-annotation配置时,自动为tablevo向下的columnvo对象添加对应注解;以及,如果步骤3.13检测到该数据表有上传、下载功能属性,会为该tablevo下的所有columnvo添加@excel注解。[0142]步骤3.20,从配置中解析出字段配置field=x,annotations=x,x,x。[0143]步骤3.21,根据field,从tablevo.column中查找到对应的columnvo,将annotations=x,x,x转化为列表,根据类名称x加载class《x》对象,写入columnvo.annotations列表。[0144]步骤104,基于表视图对象和预置的前后端代码模板,生成数据表在前后端的各代码文件。具体可包括:[0145](1)、生成dto(entity)文件。[0146]在本步骤之前,会在该columnvo对应的成员前添加columnvo中定义好的所有注解,实现字段注解的自动注入。[0147]在本步骤中,本技术实施例中对于代码文件的自动生成可使用freemarker模板引擎。template.process(objectdatamodel,writerout)接口可将datamodel中的数据写入模板文进行输出。自动生成的代码文件中依赖的相关类在依赖jar包中已有提供,需要填入代码文件的关键信息在前述步骤中已基本封装完成。freemarker模板支持简单的if-else和list指令,可以编写简单的模板文件实现逻辑判断和遍历逻辑。只需将每份文件需要的基本数据模型传入接口,即可生成模板文件。模板文件的基础设计如下,根据tablevo的内容,设置了每个代码文件的包路径、类名、依赖类和基本的代码块。[0148]dto文件可自动生成与数据库列一一对应的成员变量并根据列注释添加字段注释,指定了表名、包名和表注释,统一使用lombok的@data注解取代传统的getter、setter方法,默认支持序列化接口。此外,还根据数据库列设计自动增加校验注解。dto基础模板如下:[0149][0150]在本步骤生成entity文件时,模板根据以下逻辑生成:[0151]1、遍历tablevo的columnvo列表;[0152]2、针对每个columnvo:[0153]2.1、根据字段名和字段类型,添加该成员定义语句。[0154]2.2、如果该columnvo与tablevo的主键字段一致,在成员定义语句前添加@tableid注解,type根据主键策略确定。[0155]2.3、如果columnvo的类型为decimal、int,读取注释filedcomment。对数值范围有约束的字段,可在注释中以max:100,min:-1.0格式标注。从注释中提取maxvalue、minvalue。并追加@decimalmin、@decimalmax注解。[0156]2.4、如果columnvo的类型为string,根据charmaxlength追加字符串长度校验@bytesizevalidator注解。[0157]2.5、如果columnvo的annotations列表不为空,将列表中注解逐一添加在该columnvo定义语句前。[0158](2)、生成pojo文件[0159]主键id列一般只用于提供数据列的唯一标记,本身无业务含义。实际数据库表设计中还会有带业务含义的实际主键列,由于账期概念的引入,通常是多列的组合,设为唯一索引,保证数据正确性的同时、提高查询性能。这一实际业务主键在业务操作中使用较为频繁,出现在许多业务方法的入参和返回值中。一些常用的字段组合为了提供数据库操作效率,也会设为普通索引。为此,本方案提供了组合索引pojo的自动生成。减少了方法签名的复杂度、剔除了部分重复代码、提高了代码可读性:[0160]本步骤中从tablevo中获取索引信息indexs,忽略主键信息,遍历其余索引,为每个索引生成pojo文件,索引pojo文件模板概要如下:[0161][0162][0163](3)、生成mapper文件。[0164]mapper文件继承了com.baomidou.mybatisplus.core.mapper.basemapper《t》泛型接口,自动实现了表数据的新增、按主键删改查,也可利用wrapper《t》自定义sql条件。mapper基础模板如下:[0165][0166]本步骤中,模板生成文件时,如果该tablevo包含索引,则根据索引名称,为生成的文件添加以下针对索引的数据查、改、删方法:[0167][0168][0169](4)、生成service文件。[0170]service方法继承了com.baomidou.mybatisplus.extension.service.impl.serviceimpl泛型类,自动继承了该类实现的针对泛型t的增删改查基本操作。service基础模板如下:[0171][0172]本步骤在生成service文件时,如果该tablevo包含索引,则根据索引名称,为生成的文件添加以下方法:[0173][0174][0175]如果tablevo的isupload属性为true,则为service文件添加上传方法:[0176]intimportexcel(filefile,stringusername)[0177]如果tablevo的isexport属性位true,则为service文件添加下载方法:[0178]workbookexportexcel(httprequestrequest,${entityname}object)[0179](5)、生成controller文件。[0180]controller方法继承了本方案设计的basecontroller《t》泛型类,封装了页面查询、新增、修改、删除、批量操作等常用接口的逻辑实现。生成的针对单表的实际controller类会根据dto类自动替换相应接口的入参和返回对象。controller类本身只用于指定url和暴露接口,无需自行实现各后端接口的具体逻辑。controller基础模板如下:[0181][0182][0183]在本步骤中,与service文件逻辑类似,如果该tablevo设置了isupload或isexport属性,则为生成文件添加对应的http接口代码块。[0184](6)、生成vue文件。[0185]一张单表对应一份vue文件,通用页面设计提供了查询表单框、操作按钮区域和表数据展示区。支持对任意列的指定值查询。[0186]其中,对于步骤104中所要生成的各前后端代码文件,它们的生成顺序可以自定义设置,而不限于本技术所提供的该种生成顺序。[0187]将上述流程生成的dml文件放在数据库中执行,将以上模板生成的柜面系统代码放在工程路径下,即可行程一个支持单条数据的增删改查、数据批量操作、表数据的任意条件查询的多表基础柜面系统。[0188]因此,基于上述详细描述的对一数据表在前后端的代码文件进行生成的过程,本技术实施例提供一种用于访问数据库的前后端代码文件的生成方法,如图3所示,为本技术实施例提供的一种用于访问数据库的前后端代码文件的生成方法的示意图,该方法可以由用于访问数据库的前后端代码文件的生成装置进行执行,如生成装置可以为服务器。该方法包括以下步骤:[0189]步骤301,读取数据库配置文件;所述数据库配置文件包括数据库连接信息和各数据表的表配置信息;其中,表配置信息设置有用于生成数据表的前后端代码文件的各配置信息;[0190]步骤302,针对所述各数据表中的任一数据表,通过所述数据库连接信息,获取所述数据表的表描述信息;其中,表描述信息设置有描述数据表的各属性信息;[0191]步骤303,根据所述数据表的表配置信息和所述数据表的表描述信息,创建所述数据表的表视图对象;所述表视图对象中包括各列视图对象,至少一个列视图对象中包括列字段的注解信息,所述注解信息用于对列字段在前后端交互过程中的字段值设置限制;[0192]步骤304,根据所述表视图对象和预置的前后端代码模板,生成针对于所述数据表在前后端的各代码文件。[0193]上述方案中,对于一个业务系统,在开发人员完成基本的数据库表设计后,即针对任一张数据库表设计了对应的表描述信息,那么可通过简单的配置(包括数据库配置文件和表配置信息)生成项目所需的所有基础代码,不仅涵盖了通用的数据库操作的代码,还可以根据数据库字段的具体设计、注释信息、索引设计等生成对应的校验注解,枚举值检验,按索引增删改查操作等代码。极大的减轻了开发人员的工作量,缩短了业务系统的开发周期。[0194]以下将结合示例分别对上述一些步骤进行详细说明。[0195]在上述步骤303的一个实施中,所述根据所述数据表的表配置信息和所述数据表的表描述信息,创建所述数据表的表视图对象,包括:创建初始的表视图对象;所述初始的表视图对象包括多个待定成员;针对所述多个待定成员中的列成员中的任一列字段,创建所述列字段的列视图对象;若所述数据表的表描述信息和/或所述数据表的表配置信息中具有所述列字段的注解信息,则将所述注解信息对应的指示增加至所述列视图对象中,从而生成所述数据表的表视图对象。[0196]该部分的内容具体可以参见前述实施例中的生成tablevo的方案。[0197]在本技术的某些实施中,所述将所述注解信息对应的指示增加至所述列视图对象中,包括:若从所述数据表的表描述信息中获取到所述列字段的字典信息,则在所述列视图对象中增加字典注解指示,并将所述字典注解指示和所述字典信息添加至数据字典中;所述字典注解指示用于从所述数据字典中获取所述列字段的字典信息。[0198]该部分的内容具体可以参见前述实施例中的步骤3.6-步骤3.11的内容。[0199]在本技术的某些实施中,所述将所述注解信息对应的指示增加至所述列视图对象中,包括:若从所述数据表的表描述信息中获取到所述列字段的索引信息,则在所述列视图对象中增加索引注解指示;其中,若所述索引信息为主键索引,则在所述表视图对象中设置主键策略成员的信息。[0200]该部分的内容具体可以参见前述实施例中的步骤3.17的内容。[0201]在本技术的某些实施中,所述将所述注解信息对应的指示增加至所述列视图对象中,包括:若从所述数据表的表描述信息和/或所述数据表的表配置信息中获取到所述列字段的校验信息,则在所述列视图对象中增加校验注解指示;所述校验注解指示用于指示所述列成员的检验类。[0202]该部分的内容具体可以参见前述实施例中的步骤3.19的内容。[0203]在本技术的某些实施中,所述根据所述表视图对象和预置的前后端代码模板,生成针对于所述数据表在前后端的各代码文件,包括:通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端dto文件模板,生成后端dto代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端pojo文件模板,生成后端pojo代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端mapper文件模板,生成后端mapper代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端service文件模板,生成后端service代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的连接前后端的controller文件模板,生成前后端controller代码文件。[0204]在本技术的某些实施中,所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端dto文件模板,生成后端dto代码文件,包括:针对每个列视图对象,基于后端dto文件模板,在所述列视图对象的主键字段与表视图对象的主键字段一致时,生成具有主键注解的后端dto代码;针对具有取值约束的字段,生成具有取值注解的后端dto代码;针对具有字典注解指示的字段,生成具有字典注解指示的后端dto代码;所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端pojo文件模板,生成后端pojo代码文件,包括:针对表视图对象中的索引注解指示,通过后端pojo文件模板,生成具有索引信息的后端pojo代码;所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端mapper文件模板,生成后端mapper代码文件,包括:针对表视图对象中的索引注解指示,通过后端mapper文件模板,生成具有索引信息的数据库操作的后端mapper代码;所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端service文件模板,生成后端service代码文件,包括:针对表视图对象中的索引注解指示和表视图对象中的上传下载功能指示,通过后端service文件模板,生成具有索引信息和上传下载功能的后端service代码;所述通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的连接前后端的controller文件模板,生成前端controller代码文件,包括:针对表视图对象中的上传下载功能指示,通过连接前后端的controller文件模板,生成具有http接口的前后端controller代码。[0205]该部分的内容具体可以参见前述实施例中的步骤104的内容。[0206]基于同样的构思,本技术实施例提供一种用于访问数据库的前后端代码文件的生成装置,如图4所示,为本技术实施例提供的一种用于访问数据库的前后端代码文件的生成装置的示意图,该装置包括读取单元401、获取单元402、创建单元403和生成单元404;[0207]读取单元401,用于读取数据库配置文件;所述数据库配置文件包括数据库连接信息和各数据表的表配置信息;其中,表配置信息设置有用于生成数据表的前后端代码文件的各配置信息;[0208]获取单元402,用于针对所述各访问数据表中的任一数据表,通过所述数据库连接信息,获取所述数据表的表描述信息;其中,表描述信息设置有描述数据表的各属性信息;[0209]创建单元403,用于根据所述数据表的表配置信息和所述数据表的表描述信息,创建所述数据表的表视图对象;所述表视图对象中包括各列视图对象,至少一个列视图对象中包括列字段的注解信息,所述注解信息用于对列字段在前后端交互过程中的字段值设置限制;[0210]生成单元404,用于根据所述表视图对象和预置的前后端代码模板,生成针对于所述数据表在前后端的各代码文件。[0211]进一步的,对于该装置,创建单元403,具体用于:创建初始的表视图对象;所述初始的表视图对象包括多个待定成员;针对所述多个待定成员中的列成员中的任一列字段,创建所述列字段的列视图对象;若所述数据表的表描述信息和/或所述数据表的表配置信息中具有所述列字段的注解信息,则将所述注解信息对应的指示增加至所述列视图对象中,从而生成所述数据表的表视图对象。[0212]进一步的,对于该装置,创建单元403,具体用于:若从所述数据表的表描述信息中获取到所述列字段的字典信息,则在所述列视图对象中增加字典注解指示,并将所述字典注解指示和所述字典信息添加至数据字典中;所述字典注解指示用于从所述数据字典中获取所述列字段的字典信息。[0213]进一步的,对于该装置,创建单元403,具体用于:若从所述数据表的表描述信息中获取到所述列字段的索引信息,则在所述列视图对象中增加索引注解指示;其中,若所述索引信息为主键索引,则在所述表视图对象中设置主键策略成员的信息。[0214]进一步的,对于该装置,创建单元403,具体用于:若从所述数据表的表描述信息和/或所述数据表的表配置信息中获取到所述列字段的校验信息,则在所述列视图对象中增加校验注解指示;所述校验注解指示用于指示所述列字段的检验类。[0215]进一步的,对于该装置,生成单元404,具体用于:通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端dto文件模板,生成后端dto代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端pojo文件模板,生成后端pojo代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端mapper文件模板,生成后端mapper代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的后端service文件模板,生成后端service代码文件;通过模板引擎,将所述表视图对象加载至所述表配置信息中前后端代码模板包含的连接前后端的controller文件模板,生成前后端controller代码文件。[0216]进一步的,对于该装置,生成单元404,具体用于:针对每个列视图对象,基于后端dto文件模板,在所述列视图对象的主键字段与表视图对象的主键字段一致时,生成具有主键注解的后端dto代码;针对具有取值约束的字段,生成具有取值注解的后端dto代码;针对具有字典注解指示的字段,生成具有字典注解指示的后端dto代码;针对表视图对象中的索引注解指示,通过后端pojo文件模板,生成具有索引信息的后端pojo代码;针对表视图对象中的索引注解指示,通过后端mapper文件模板,生成具有索引信息的数据库操作的后端mapper代码;针对表视图对象中的索引注解指示和表视图对象中的上传下载功能指示,通过后端service文件模板,生成具有索引信息和上传下载功能的后端service代码;针对表视图对象中的上传下载功能指示,通过连接前后端的controller文件模板,生成具有http接口的前后端controller代码。[0217]本技术实施例还提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(personaldigitalassistant,pda)等。该计算设备可以包括中央处理器(centerprocessingunit,cpu)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(liquidcrystaldisplay,lcd)、阴极射线管(cathoderaytube,crt)等。[0218]存储器,可以包括只读存储器(rom)和随机存取存储器(ram),并向处理器提供存储器中存储的程序指令和数据。在本技术实施例中,存储器可以用于存储用于访问数据库的前后端代码文件的生成方法的程序指令;[0219]处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行用于访问数据库的前后端代码文件的生成方法。[0220]如图5所示,为本技术实施例提供的一种计算设备的示意图,该计算设备包括:[0221]处理器501、存储器502、收发器503、总线接口504;其中,处理器501、存储器502与收发器503之间通过总线505连接;[0222]所述处理器501,用于读取所述存储器502中的程序,执行上述用于访问数据库的前后端代码文件的生成方法;[0223]处理器501可以是中央处理器(centralprocessingunit,简称cpu),网络处理器(networkprocessor,简称np)或者cpu和np的组合。还可以是硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,简称asic),可编程逻辑器件(programmablelogicdevice,简称pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,简称cpld),现场可编程逻辑门阵列(field-programmablegatearray,简称fpga),通用阵列逻辑(genericarraylogic,简称gal)或其任意组合。[0224]所述存储器502,用于存储一个或多个可执行程序,可以存储所述处理器501在执行操作时所使用的数据。[0225]具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器502可以包括易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,简称ram);存储器502也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flashmemory),硬盘(harddiskdrive,简称hdd)或固态硬盘(solid-statedrive,简称ssd);存储器502还可以包括上述种类的存储器的组合。[0226]存储器502存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:[0227]操作指令:包括各种操作指令,用于实现各种操作。[0228]操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。[0229]总线505可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0230]总线接口504可以为有线通信接入口,无线总线接口或其组合,其中,有线总线接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线总线接口可以为wlan接口。[0231]本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行用于访问数据库的前后端代码文件的生成方法。[0232]本领域内的技术人员应明白,本技术的实施例可提供为方法、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0233]本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0234]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0235]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0236]尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。[0237]显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1