2020-08-03:讲下代码生成器原理。

福哥答案2020-08-03:

此答案是根据mysql数据库生成某种语言的代码。

1.mysql涉及到的数据库的表
INFORMATION_SCHEMA.Tables
INFORMATION_SCHEMA.Columns

2.读数据库的相关信息。
数据库信息:
属性:【连接字符串】,【数据库类型】(mysql,sqlite等等),【数据库名】,【描述】,表集合。
方法:加载表集合。
表信息:
属性:所在数据库,【表名称】,【表描述】,字段集合。
方法:加载字段集合、表名称转成符合某种语言规范的名称。
字段信息:
属性:所在表,【字段名称】,【序号】,【数据类型】,【数据长度】,【小数点位数】,【占用字节数】,【标识】,【主键】,【外键】,【是否为空】,【默认值】,【描述】。
方法:数据类型转换成某种语言类型、字段名称转成符合某种语言规范的名称。

3.生成model,dal,bll等代码,这里最好写成3个方法,比如genmodelcode方法,gendalcode方法,genbllcode方法。
①.字符串拼接。
②.采用模板库或者第三方库。比如golang的template模板引擎。比如java的JavaPoet。

4.代码生成注意事项。
①代码生成一般要考虑【自动代码】部分和【手动代码】部分。
c#的partial非常方便的把一个类的自动代码和手动代码分散到两个不同的文件。golang里同一个结构体不能拆分,方法可以放到同目录的不同文件里。java不可拆分,用继承实现。
②自动代码是否每次覆盖。
如果每次覆盖,你在自动生成的代码里写代码,然后执行自动生成,你写的代码就没了。
如果不覆盖,你在自动生成的代码里写代码,然后执行自动生成,你写的代码依然在。


评论

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

福大大架构师每日一题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值