vc运行库官方下载(c代码生成器)
遗留问题
上一篇文章留下了三个问题。如何处理jdbcType和javaType之间的映射?生成非基本数据类型的域对象时该怎么办?java命名约定和数据库命名约定呢?00-1010对于问题1:我的第一反应是像mybatis这样的orm框架也必须处理这个问题。他用typeHandler实现映射,所以我看了相关代码,发现他的jdbcType是声明代码的枚举值。至于这段代码是如何映射到数据库的数据类型,还是个未知数,所以我声明了常量来做判断,主要分为String、bigDemical、date和integer。(非常低,但非常有效)
问题2:现在我已经声明了JDBCType的常量,让我们继续进行判断。只需通过数组维护它,并将其写入模板。
问题3:这个问题没什么好说的。我可以通过代码处理解决,但是第一天就说freemarker包含丰富的内置函数,为什么不通过他处理呢?
00-1010这里的库指的是mysql数据库,和其他关系数据库应该没什么区别。
我的实现思路如下。
获取表的基本信息、表名、表注释和字段信息。您可以维护一个要填写的表格,也可以通过information_schema获取我需要的附加信息。表,信息模式。COLUMNS,如类名、作者、类用途等。(如上一篇文章所述),甚至定义当前表和其他表之间的关系。所以我肯定需要维护一个配置表。将freemarker的输出流封装到zip中,最后输出到response进行下载。00-1010我通过mybatis获得了表数据,所以我不会发布这段代码。
将freemarker的输出流封装到zip中。
writer out=Ftlutil . GenFile(gentable config,' entity . Ftl ');
byteearrayoputstream outputStream=new byteearrayoputstream();
ZIpOutputStream ZIp=new ZIpOutputStream(OutputStream);
zip.putNextEntry(新的ZipEntry(' entity . Java '));
IOUtils.write(out.toString(),zip,' UTF-8 ');
IOUtils.closeQuietly悄悄地(出去);
zip . flush();
zip . closeentry();
IOUtils.closeQuietly悄悄(zip);
提供zip文件作为api供下载。
@ApiOperation('代码生成')
@PostMapping('code/gen ')
public response entity gen code(@ RequestBody GenTableEvt GenTableEvt)引发IOException,TemplateException(
byte[]data=gencodeservice . gencode(genTableEvt);
Httpheaders Httpheaders=new Httpheaders();
添加('内容-处置','附件;filename=\ \ ' ruoyi . zip \ \ ' ');
httpaders . add(' Content-Length ',' data . Length);
httpaders . setcontenttype(MediaType。APPLICATION _ OCTET _ STREAM);
返回新的响应实体(数据、httpHeaders、HttpStatus。OK);
}
到目前为止,配置驱动模板生成的整个过程已经完成,每个团队都可以根据自己的需求定制自己的模板,包括controller、service、dao、mapper.xml甚至前端文件。
但是还剩下一个大坑。如何维护?如果模板推广了,中间发现了一些问题,不是每个项目都要改吗?
目前,我的想法是
情况一:只做最简单的事情,不增加任何额外的事情。这种方式,风险很小,无需考虑维护,但效果有限。
情况二:增加一些钩子函数,比如一般的AOP,过滤器,已经实现了,但是以后可能会改变。这需要维护。
我需要一个父pom,其中放置了所有的公共类。pom可以通过maven命令进行更新。我可以考虑写一个shell脚本,团队可以通过jenkins shell脚本进行更新。这解决了内部代码更改的问题。我需要编写python脚本,将代码拉到本地区域,然后遍历可能有公共模板代码的地方并修改它。这是有风险的,尤其是当项目很复杂的时候(项目很复杂,一切都有风险)。因此,也有必要通过jenkins的模板构造,它只解决了模板代码的问题。在团队开发中,还需要管理代码块并为模板工程生成支架。
讲完了和平与爱