老杨说话的地方
  • 首页
  • 关于老杨
  • 博客时间
  • 文章分类
    • 人工智能
    • 人生感悟
      • 共产主义
      • 能量哲学
      • 自然辩证法
    • 信息技术
      • C#笔记
      • LaTex
      • Linux
      • RIME
      • Ubuntu&Debian
      • WordPress
      • 基于Java的B/S系统构建
      • 开源开发
      • 病毒相关
      • 编程的坏习惯
      • 网上办公系统
    • 往事随风
      • 我在大学那几年
      • 童年趣事
      • 精彩生活
    • 情感随笔
    • 文学创作
      • 小说
    • 生活记录
      • 博士进行中
      • 美国一年
      • 老杨学游泳
    • 评论杂谈
  • 留言本
我是老杨
张驰有度 宠辱不惊
  1. 首页
  2. 信息技术
  3. 正文

杨氏框架的自动代码功能

2009年11月30日 18216点热度 0人点赞 43条评论

承蒙朋友们抬爱,把这个框架命名为杨氏框架,那我就不客气了。我起的英文名字,大家记住,Yangs Frame。

现在杨氏框架在师弟师妹的努力下已经日趋完善,也已经在项目中开始使用。可是我知道我们的框架当然需要有很多提高的地方,所以这里我要提出一些新的要求。

  1. 框架的发展
    杨氏框架将在下面的方向进行发展,或者说经历下面的几个阶段:
    • 前台和后台代码的自动生成功能(这也是我这篇文章将要说明的)
    • 系统程序的模块化(如果第一步能够实现,那么第二步将会很容易了)
    • 提升效率(包括数据库连接资源池、数据的缓存、数据库的并发以及全局变量的使用等)

    等上面的三部分基本都实现了,那么框架就很成熟了

  2. 自动代码功能
    之所以要提这个功能,是因为我觉得杨氏框架还不够智能。如果一个数据表的结构改变,那么首先我们要修改数据库,同时要修改前台页面,还要修改后台生成sql语句的类。工作量是巨大的。所以我希望能够引入配置文件的功能,从而实现代码的自动生成。
    • 实现架构
      架构图如图1所示:这里我假定的是理想情况,不需要做任何修改,那么使用E-R图生成的Sql语句和XML是绝对一致的。SQL语句用来生成数据库,XML文件用来生成前台页面和后台代码,所以三者之间是高度一致的。
    • autocoding1
    • XML文件
      XML文件的结构应该如下所示(仅供参考)
      HTML
      1
      
      
      

      ...................................

      其中的name和数据库表中的某一列的列名,数据类型,是否唯一,是否为空都需要定义。另外NickName指的是别名,用来在前台Form表单进行显示。为了保证效率,可以在Tomcat运行时就将该XML文件载入内存,存放在全局变量中,这样前台和后台都可以直接使用。

    • 前台代码(所有的代码都是伪代码,我现在已经退化到不会写代码了)
      前台代码我想采用自定义标签的形式,前台调用方式会很简单:
      纯文本
      1

      后台处理的Java程序也并不难,但是可能会复杂,因为要考虑的情况很多:

      Java
      123
      this.tablename=tablename;//get which form you want to generate
      autoform.getTable(tablename);//get the table info from the xml stored in Memory as Application variable
      out.print("
      "); for(i=1; i<autoform.columnnumber;i++) { if(column[i].type="text") { out.print(column.nickname+"");//generate the form code } ..................// } out.print("

      ");

    • 后台代码
      后台代码页会非常简单,在我们为一个实体Bean设置完属性后(setProperty),就可以使用另外的函数来生成插入,修改还是删除它的Sql语句了。
      Java
      123456789
      XML=Application.XML;//get the xml file stored in Memory
      this.tablename=tablename;
      Table=getTable("Tablename");
      String InsertSQL="insert into "+tablename;
      for(i=1; i<autoform.columnnumber;i++)
      {
      	InsertSQL=InsertSQL+"(column[i].name"+",");
      }
      InsertSQL=InsertSQL+this.username+.........
      

    这个的过程基本就是这样的,其实并不难。

  3. 这样做的好处
    • 易于开发,不用前台后台不停的核对了,我们只需要编写XML文件即可
    • 易于维护,当某一个功能升级后,我们只需要修改XML即可(对于小的改动)
    • 一致性,前台和后台高度一致(因为都来自于XML文件),因此出错可能性小。

    当然可能也会有一些缺点,容后讨论。

差不多就是这样,写出来供大家参考。

标签: java tomcat xml 升级 工作 开始 数据库 文件 框架 程序 项目
最后更新:2016年11月26日
老杨

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

点赞

评论(43)

写下你的评论
  1. seo博客
    seo博客2009年12月03日 18:08

    翔子来看你了 老杨!

    1. 老杨
      老杨作者2009年12月03日 18:25

      @seo博客 谢谢。昨天博客主机出问题了,今天刚好的

  2. 开心凡人
    开心凡人2009年12月03日 19:52

    看看这框架

    1. 老杨
      老杨作者2009年12月03日 19:54

      @开心凡人 呃,希望你能看懂

  3. crossyou
    crossyou2009年12月10日 15:58

    杨氏 框架?

    你老杨 我小杨 哈。

    1. 老杨
      老杨作者2009年12月20日 12:04

      @crossyou 嗯?咱们是本家?

      1. crossyou
        crossyou2009年12月20日 19:07

        @老杨 恩,呵呵

  4. 铵铵
    铵铵2009年12月19日 04:28

    愣是没看懂.

    1. 老杨
      老杨作者2009年12月20日 12:03

      @铵铵 呃,没看懂就对了,术业有专攻嘛

  5. 八哥
    八哥2009年12月24日 21:41

    杨氏框架?呵呵第一次听说。研究下

    1. 老杨
      老杨作者2009年12月25日 08:43

      @八哥 呃,估计你研究不通,因为是我们自己写的框架。如果效果好的话,我会考虑开源的

  6. 徐才华
    徐才华2010年04月22日 07:37

    =好可以好可以
    比我做的网站好!

  7. 徐才华
    徐才华2010年04月22日 07:38

    好可以在这个中国有你这样的人,我们感到高兴!

    1. 老杨
      老杨作者2010年04月22日 08:24

      @徐才华 说实话,没太搞明白你说的话是什么意思

  8. simon
    simon2010年05月23日 23:30

    ^_^,我最近也在搞这个。不过还没开始。居然和你的思路是完全一致的,不过我是在asp.net中研究。我现在xml的配置都搞好了。只是觉得实际结果可能并没有那么好。
    比如表单提交的页面:如果用表格设计,表单应该有几列?字段中有字典数据(下拉框)关联到数据库的另一张表你如何定义好去自动搜索,而且还要考虑配置文件属性不应该过多,这样只会增加团队人员的学习成本,刚开始觉得实现起来其实很简单,后来仔细想想发现问题还是很多的,所以放弃了一段时间。不过最近决定重新开始了。
    短期我是这样想的:通用的表单提交和分页列表全部自动生成,只需要维护配置文件即可,每个页面page load的时候传入数据库的表名就自动前台控件和脚本,分页和提交全部采用ajax。表单提交页面的样式布局和字段排序应该也是可配置的。不过这只是最通用的情况,加入权限判断之后可能就更复杂了。

    1. 老杨
      老杨作者2010年05月24日 08:50

      @simon 对于ASP.NET的情况,我还不是特别了解,我们前台生成的表单准备全部用div来实现,然后用css来控制样式,这样灵活一些。
      另外有一个安全问题,你要考虑,就是这样配置数据库的结构必然明文出现在xml文件中,所以要做一些工作。
      另外你说的权限,我们是使用过滤器实现的,这个和整个框架没有冲突。不知道aspx有没有这种类似的功能,你可以找一下

  9. 战斗机
    战斗机2010年10月10日 10:05

    呵呵,是不是向hibernate靠拢,杨哥,我正在用你的框架,对于咱们实验室的项目很适合。也接触过Struts2+Spring+hibernate需要配置的地方太多,总之感觉开发的简捷度+灵活度=配置的复杂度。杨哥我要好好您的框架,刚到实验室,只是用了,也没空研究,有不懂的地方还需要请教您

    1. 老杨
      老杨作者2010年10月11日 09:53

      @战斗机 现在他们对于框架的理解已经超过我了,我自己都不会用了
      所以你如果有问题,可以问你的师兄师姐

  10. kam
    kam2011年07月22日 09:58

    很好很强大!有机会实践一下!

发表评论

选择代码语言
选好后在光标处插入代码块,把示例文字换成你的代码即可。

老杨

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

搜索
最新 热点 随机
关于机器人的发展 遥遥领先 开源密码生成工具SimplePassword 痛苦根源 同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端) 别成为AI的奴隶 给阿嬷的情书 信息焦虑综合症 PUA 人的悲喜并不相通
为多用户安装Anaconda及其使用方法WordPress主题发布:kratos_YangLaTex中上划线\overline和\bar的使用说明LaTex中设置字体的正确方法那一年,2009使用Windows7自带Windows Media Center播放RMVB影片幼儿园:回味童年童年趣事之气门芯这几天的事儿无插件实现WordPress留言本
时代的车轮 不要就这样荒废 晴迷星途07天使爱美丽 我爱广告 女朋友 爱情公寓3 屌丝生成记 我是一个网络控 编程的坏习惯之百密一疏 Linux系统终端没有颜色
最近评论
  • 感谢支持。可以买个鸿蒙设备玩玩
    老杨·2 周前·同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端)
  • 没有鸿蒙设备,吆喝一声支持老杨的产品
    乱云/Akay·2 周前·同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端)
  • 先从减少手机使用时间开始。
    shanshan·1 月前·信息焦虑综合症
  • 所以必须得自己下定决心痛改前非,而不是跟自己讲条件。
    shanshan·1 月前·第二青春计划失败
  • 这种平台挺多的,但是应该没啥用,能有啥情绪价值比躺着刷手机更好呢?
    老杨·1 月前·第二青春计划失败
  • 已经遇到了,额外支付了170,托运登机行李,还不是托运行李。
    老杨·1 月前·春秋航空让人长见识
  • 那很好,恭喜你
    老杨·1 月前·PUA
  • 可以尝试改变。
    老杨·1 月前·信息焦虑综合症
  • 现在很多人离开AI已经不知道怎么工作了。
    老杨·1 月前·别成为AI的奴隶
  • 建议开发一个适合P人的工作生活计划平台,完不成没什么惩罚、但是完成了有大大的情绪…
    shanshan·1 月前·第二青春计划失败
  • 还有部分机型里20寸箱子应该上不了机,且没有免费行李托运额度。托运费超贵!
    shanshan·1 月前·春秋航空让人长见识
  • 这个世界精致利己主义者太多啦!
    shanshan·1 月前·人的悲喜并不相通
文章分类
选择分类
  • 人工智能13
  • 人生感悟121
    • 共产主义1
    • 能量哲学12
    • 自然辩证法12
  • 信息技术234
    • C#笔记6
    • LaTex12
    • Linux18
    • RIME4
    • Ubuntu&Debian21
    • WordPress1
    • 基于Java的B/S系统构建10
    • 开源开发2
    • 病毒相关3
    • 编程的坏习惯4
    • 网上办公系统9
  • 往事随风41
    • 我在大学那几年18
    • 童年趣事12
    • 精彩生活5
  • 情感随笔113
  • 文学创作69
    • 小说68
  • 生活记录220
    • 博士进行中6
    • 美国一年22
    • 老杨学游泳4
  • 评论杂谈169
关注公众号

COPYRIGHT © 2026 老杨说话的地方. ALL RIGHTS RESERVED.

THEME KRATOS YANG Modified BY 老杨

鲁ICP备17014997号-4

鲁公网安备 37021302000754号