采用基于框架的代码生成工具生产代码的方法
技术领域
本发明涉及代码生成领域,特别涉及一种采用基于框架的代码生成工具生产代码的方法。
背景技术
在软件开发过程中,为增加系统的稳定性、降低软件的开发维护成本、提高开发效率,国内外很多科研机构、跨国公司等都开始从事代码自动生成方面的研究并开发出了各种各样的代码生成工具。在企业级WEB开发中,经常涉及重复性的工作,重复处理大量相同的代码是一件繁琐的体力劳动,且复制黏贴的过程并不能保证代码的统一性和规范性,更不能保证拷贝的过程中代码的正确性。
现有技术中,在代码生成过程中,需要用户多次选择重复的内容,甚至需要通过键盘输入对应的指令,生成代码的过程较为繁琐,效率低下;对中间表的生成没有做支持或优化;普通的代码生成过程只能生成普通的增删查修功能,并不会在前端和服务端进行参数校验,代码的健壮性不足。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种代码的生成过程较为简单、效率较高、能在前端和服务端进行参数校验、代码的健壮性较好、降低软件的开发成本、缩短开发周期、减少代码的重复编码和差异性的采用基于框架的代码生成工具生产代码的方法。
本发明解决其技术问题所采用的技术方案是:构造一种采用基于框架的代码生成工具生产代码的方法,包括如下步骤:
A)配置数据库链接信息和代码生成路径;所述数据库链接信息包括数据库名、连接用户名和连接用户密码,所述代码生成路径包括创建文件的基础路径和源文件路径;
B)配置需要生成的代码所对应的表名、包名、继承基类、生成代码的版本号、是否覆盖原有代码和是否中间表信息;
C)根据用户配置的数据,使用Ant构建代码生成工具,用户勾选需要生成的代码选项;
D)使用jdbc连接数据库,通过查询所述数据库获取build.properties中指定表中的字段名称、每个字段的注释、类型、默认值以及字段是否为空信息;
E)读取模板;
F)生成BO层代码、Dao层代码、Dao层实现类代码、Service层代码、Service层实现类代码、mybatis Mapper代码和View层代码;
G)判断是否为中间表,如是,生成view层中的Controller Java代码,并生成权限SQL,执行步骤H);否则,执行步骤I);
H)生成接口权限控制代码;
I)生成查询条件子界面,执行步骤J);
J)生成列表子界面;
K)生成新增/修改子界面;
L)弹出选择查看字段弹窗,用户选择指定的字段,点击确认后,所述代码生成工具捕获用户选择的字段,并生成查看子页面。
在本发明所述的采用基于框架的代码生成工具生产代码的方法中,所述步骤E)进一步包括:
E1)用户若选择生成Abstract Bo选项,则根据build.properties获取是否为中间表,如是,执行步骤E2);否则,渲染到通用BO模板;
E2)渲染到中间表模板,并将渲染出来的模板保存到所述步骤A)和步骤B)中指定的文件目录中。
在本发明所述的采用基于框架的代码生成工具生产代码的方法中,所述步骤I)进一步包括:
I1)弹出查询条件选择界面,生成搜索条件子界面;
I2)用户选择指定的字段,点击确认后,所述代码生成工具会捕获用户选择的字段,并生成查询条件子页面,其中生成的代码根据所述数据库中字段的类型渲染成不同的控件。
在本发明所述的采用基于框架的代码生成工具生产代码的方法中,所述步骤J)进一步包括:
J1)弹出选择列表显示字段弹窗;
J2)用户选择指定的字段,点击确认后,所述代码生成工具会捕获用户选择的字段,并生成列表子页面,其中生成的代码会根据所述数据库中字段的类型渲染成指定的格式。
在本发明所述的采用基于框架的代码生成工具生产代码的方法中,所述步骤K)进一步包括:
K1)弹出选择增加/修改字段弹窗;
K2)用户选择指定的字段,点击确认后,所述代码生成工具会捕获用户选择的字段,并生成新增/编辑子页面,其中生成的代码会根据所述数据库中字段的类型渲染成不同的控件;
K3)所述代码生成工具根据字段类型以及字段是否允许为空的字段属性,生成基于jquery-validate的前端js验证代码,在生成所述新增/编辑子页面的同时,所述代码生成工具会根据用户选择的字段生成对应的基于Hibernate Validate后端验证的Form表单接收类,用于后端验证。
在本发明所述的采用基于框架的代码生成工具生产代码的方法中,所述View层代码包括Controller代码和view层映射的页面模板代码。
实施本发明的采用基于框架的代码生成工具生产代码的方法,具有以下有益效果:由于使用Ant构建项目,去除繁杂的选择生成模块操作,生成过程中,全面使用选择代替手动输入;完美支持中间表的代码生成,避免中间表只存在与SQL中的尴尬局面,并为中间表提供丰富的操作;基于SpringMVC、Hibernate Validate、MyBatis、FreeMarker生成代码,为健壮的代码质量提供保障;生成前端代码时,会根据数据库中的字段约束用动态构建前端验证JavaScript代码,并能根据字段类型生成对应控件,能极大提升生产力;生成的服务端代码使用基于JavaDoc的标准注释,让注释成为最好的接口文档;服务端生成的接收表单BO使用Hibernate Validate做后端验证,保证数据合法性,并极大提升服务端的安全性,因此其代码的生成过程较为简单、效率较高、能在前端和服务端进行参数校验、代码的健壮性较好、降低软件的开发成本、缩短开发周期、减少代码的重复编码和差异性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明采用基于框架的代码生成工具生产代码的方法一个实施例中的流程图;
图2为所述实施例中读取模板的具体流程图;
图3为所述实施例中生成查询条件子界面的具体流程图;
图4为所述实施例中生成列表子界面的具体流程图;
图5为所述实施例中生成新增/修改子界面的具体流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明采用基于框架的代码生成工具生产代码的方法实施例中,该采用基于框架的代码生成工具生产代码的方法的流程图如图1所示。图1中,该采用基于框架的代码生成工具生产代码的方法包括如下步骤:
步骤S01配置数据库链接信息和代码生成路径:本步骤中,配置数据库链接信息和代码生成路径,也就是配置通用构建配置文件build.xml,该通用构建配置文件build.xml的具体内容请见表1。配置文件build.xml一般是一次指定,后期修改概率较小。上述数据库链接信息包括数据库名、连接用户名和连接用户密码,代码生成路径包括创建文件的基础路径和源文件路径。
表1
属性 |
备注 |
示例 |
jdbc.url |
数据库名 |
<property name="jdbc.url"value="jdbc:oracle:thin:@172.16.20.39:1521:vmdb"/> |
jdbc.username |
连接用户名 |
<property name="jdbc.username"value="vexam"/> |
jdbc.password |
连接用户密码 |
<property name="jdbc.password"value="123456"/> |
projectPath |
创建文件的基础路径 |
<property name="projectPath"value="E:\workspacesVexam\vb-test"/> |
srcProjectPath |
源文件路径 |
<property name="srcProjectPath"value="E:\workspacesVexam\vCodeGenerator"/> |
步骤S02配置需要生成的代码所对应的表名、包名、继承基类、生成代码的版本号、是否覆盖原有代码和是否中间表信息:本步骤中,配置需要生成的代码所对应的表名、包名、继承基类、生成代码的版本号、是否覆盖原有代码和是否中间表信息,也就是配置生成策略配置文件build.properties。该生成策略配置文件build.properties的具体内容请见表2。
表2
属性 |
备注 |
示例 |
tableName |
表名 |
tableName=AUTH_USER |
packagePath |
包名 |
packagePath=com.vnetoo.vcomponent.vbtest.admin.sysRoleRightRel |
extendBase |
继承基类 |
extendBase=BizBaseObject |
version |
生成代码的版本号 |
version=V2.0.0 |
overWrite |
是否覆盖原有代码 |
overWrite=true |
isRelTable |
是否中间表 |
isRelTable=false |
步骤S03根据用户配置的数据,使用Ant构建代码生成工具,用户勾选需要生成的代码选项:本步骤中,根据用户配置的数据,使用Ant构建代码生成工具,用户勾选需要生成的代码选项。值得一提的是,上述构建的代码生成工具为基于Spring MVC、HibernateValidate、MyBatis、FreeMarker框架的代码生成工具。
步骤S04使用jdbc连接数据库,通过查询数据库获取build.properties中指定表中的字段名称、每个字段的注释、类型、默认值以及字段是否为空信息:本步骤中,使用jdbc连接数据库,通过查询数据库获取生成策略配置文件build.properties中指定表中的字段名称、每个字段的注释、类型、默认值以及字段是否为空信息。
步骤S05读取模板:本步骤中,读取模板。
步骤S06生成BO层代码、Dao层代码、Dao层实现类代码、Service层代码、Service层实现类代码、mybatis Mapper代码和View层代码:本步骤中,生成BO层代码、Dao层代码、Dao层实现类代码、Service层代码、Service层实现类代码、mybatis Mapper代码和View层代码。
步骤S07判断是否为中间表:本步骤中,判断是否为中间表,如果判断的结果为是,则执行步骤S08;否则,执行步骤S10。
步骤S08生成view层中的Controller Java代码,并生成权限SQL:如果上述步骤S07的判断结果为是,则执行本步骤。值得一提的是,本实施例中,在代码生成工具生成代码的过程中,还会对中间表做一些特殊处理,中间表一般用于维系多个对象间多对多的关系,其在所有的应用场景中只用于查询或者统计,并将查询或者统计的数据返回到主对象的视图层,本实施例中,该代码生成工具中针对中间表做了查询简化,并且不生成中间表视图层的代码,其中视图层代码(即View层代码)包括view层中的Controller代码和view层映射的页面模板代码。而不是中间表的生成过程则会生成view层中的Controller代码和view层映射的页面模板代码。
本步骤中,生成view层中的Controller Java代码,并生成权限SQL。SQL用于插入数据库,用作接口权限验证。执行完本步骤,执行步骤S09。
步骤S09生成接口权限控制代码:本步骤中,生成接口权限控制代码。
步骤S10生成查询条件子界面:如果上述步骤S07的判断结果为否,则执行本步骤。本步骤中,生成查询条件子界面。执行完本步骤,执行步骤S11。
步骤S11生成列表子界面:本步骤中,生成列表子界面。
步骤S12生成新增/修改子界面:本步骤中,生成新增/修改子界面。
步骤S13弹出选择查看字段弹窗,用户选择指定的字段,点击确认后,代码生成工具捕获用户选择的字段,并生成查看子页面:本步骤中,弹出选择查看字段弹窗,用户选择指定的字段,点击确认后,代码生成工具捕获用户选择的字段,并生成查看子页面。该查看子页面主要用于查看单个数据的详情,其中生成的代码会根据数据库中字段的类型渲染成指定的格式,如:字段如果是日期类型,生成的代码会默认为指定格式,该指定格式为“yyyy-MM-dd HH:mm:ss”格式。
本发明的方法由于使用Ant构建项目,去除繁杂的选择生成模块操作,生成过程中,全面使用选择代替手动输入;完美支持中间表的代码生成,避免中间表只存在与SQL中的尴尬局面,并为中间表提供丰富的操作;基于SpringMVC、Hibernate Validate、MyBatis、FreeMarker生成代码,为健壮的代码质量提供保障;生成前端代码时,会根据数据库中的字段约束用动态构建前端验证JavaScript代码,并能根据字段类型生成对应控件,能极大提升生产力;生成的服务端代码使用基于JavaDoc的标准注释,让注释成为最好的接口文档;服务端生成的接收表单BO使用Hibernate Validate做后端验证,保证数据合法性,并极大提升服务端的安全性,因此其代码的生成过程较为简单、效率较高、能在前端和服务端进行参数校验、代码的健壮性较好、降低软件的开发成本、缩短开发周期、减少代码的重复编码和差异性,为提高软件质量提供良好的保证。与此同时,能让开发人员将更多的精力放在核心业务逻辑的实现上。
对于本实施例而言,上述步骤S05还可进一步细化,其细化后的流程图如图2所示。图2中,上述步骤S05进一步包括:
步骤S51用户若选择生成Abstract Bo选项,则根据build.properties获取是否为中间表:本步骤中,用户若选择生成Abstract Bo选项,则根据build.properties获取是否为中间表,如果判断的结果为是,则执行步骤S52;否则,执行步骤S53。
步骤S52渲染到中间表模板,并将渲染出来的模板保存到步骤S01和步骤S02中指定的文件目录中:如果上述步骤S51的判断结果为是,则执行本步骤。本步骤中,渲染到中间表模板,并将渲染出来的模板保存到步骤S01和步骤S02中指定的文件目录中。渲染指的是在生成代码前,用户需按照自己的需求定义模板,代码生成工具将模板需要的数据传输到模板中,对模板中的内容进行替换,从而生成指定的文件。
步骤S53渲染到通用BO模板:如果上述步骤S51的判断结果为否,则执行本步骤。本步骤找,渲染到通用BO模板。
对于本实施例而言,上述步骤S10还可进一步细化,其细化后的流程图如图3所示。图3中,上述步骤S10进一步包括:
步骤S101弹出查询条件选择界面,生成搜索条件子界面:本步骤中,弹出查询条件选择界面,生成搜索条件子界面。
步骤S102用户选择指定的字段,点击确认后,代码生成工具会捕获用户选择的字段,并生成查询条件子页面,其中生成的代码根据数据库中字段的类型渲染成不同的控件:本步骤中,用户选择指定的字段,点击确认后,代码生成工具会捕获用户选择的字段,并生成查询条件子页面,该查询条件子页面主要用于查询,其中生成的代码会根据数据库中字段的类型渲染成不同的控件,如:字段如果是日期类型,生成的代码则是一个基于WdatePicker控件的时间控件。
对于本实施例而言,上述步骤S11还可进一步细化,其细化后的流程图如图4所示。图4中,上述步骤S11进一步包括如下步骤:
步骤S111弹出选择列表显示字段弹窗:本步骤中,弹出选择列表显示字段弹窗。
步骤S112用户选择指定的字段,点击确认后,代码生成工具会捕获用户选择的字段,并生成列表子页面,其中生成的代码会根据数据库中字段的类型渲染成指定的格式:本步骤中,用户选择指定的字段,点击确认后,代码生成工具会捕获用户选择的字段,并生成列表子页面,该列表子页面主要用于显示列表和展示数据集,其中生成的代码会根据数据库中字段的类型渲染成指定的格式。如字段如果是日期类型,生成的代码会默认为指定格式为“yyyy-MM-dd HH:mm:ss”格式。
对于本实施例而言,上述步骤S12还可进一步细化,其细化后的流程图如图5所示。图5中,上述步骤S12进一步包括:
步骤S121弹出选择增加/修改字段弹窗:本步骤中,弹出选择增加/修改字段弹窗。
步骤S122用户选择指定的字段,点击确认后,代码生成工具会捕获用户选择的字段,并生成新增/编辑子页面,其中生成的代码会根据数据库中字段的类型渲染成不同的控件:本步骤中,用户选择指定的字段,点击确认后,代码生成工具会捕获用户选择的字段,并生成新增/编辑子页面,该新增/编辑子页面主要用于新增和编辑数据,其中生成的代码会根据数据库中字段的类型渲染成不同的控件,如字段如果是日期类型,生成的代码则是一个基于WdatePicker控件的时间控件。
步骤S123代码生成工具根据字段类型以及字段是否允许为空的字段属性,生成基于jquery-validate的前端js验证代码,在生成新增/编辑子页面的同时,代码生成工具会根据用户选择的字段生成对应的基于Hibernate Validate后端验证的Form表单接收类,用于后端验证:本步骤中,代码生成工具根据字段类型以及字段是否允许为空的字段属性,生成基于jquery-validate的前端js验证代码,确保用户在正常使用的情况下能够过滤掉不合法的数据,在生成新增/编辑子页面的同时,代码生成工具会根据用户选择的字段生成对应的基于Hibernate Validate后端验证的Form表单接收类,用于后端验证。
总之,本实施例中,由于使用Ant构建项目,去除繁杂的选择生成模块操作,生成过程中,全面使用选择代替手动输入;完美支持中间表的代码生成,避免中间表只存在与SQL中的尴尬局面,并为中间表提供丰富的操作;基于SpringMVC、Hibernate Validate、MyBatis、FreeMarker生成代码,为健壮的代码质量提供保障;生成前端代码时,会根据数据库中的字段约束用动态构建前端验证JavaScript代码,并能根据字段类型生成对应控件,能极大提升生产力;生成的服务端代码使用基于JavaDoc的标准注释,让注释成为最好的接口文档;服务端生成的接收表单BO使用Hibernate Validate做后端验证,保证数据合法性,并极大提升服务端的安全性,因此其代码的生成过程较为简单、效率较高、能在前端和服务端进行参数校验、代码的健壮性较好、降低软件的开发成本、缩短开发周期、减少代码的重复编码和差异性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。