绪论:随着需求业务的不断壮大,不能在依靠与人力手动创建一个个的表单和实体设计,这样太耗时间和工作效率低。心里想着如果能够动态创建表和表单实现,这样能够节省开发时间和提高开发效率。
问题:通过近几天的学习动态生成表结构,基本表结构数据可以初始化完后,也支持查询字段等操作,可以动态生成后台业务代码和前端页面,可以实现绝大多数需求操作。 但是仍有一些问题,如字典表数据和关联表数据,仍没有一个好的设计和实现。主要从两个方面体现,一是关联表数据作为查询时,要获取关联的所有数据,二是关联表显示时,本身数据库存储的是id数据,页面需要展示中文字段还有可能需要需要根据某个关联字段的中文字段进行模糊查询。
接下来讲述目前动态创建表实现原理:
- 首先是要创建好表,加上注释以及必要的条件
- 然后选择需要生成文件的表。
- 接着设置字段的属性信息,如查询、列表展示和是否可编辑。这些字段只要是只是用来生成页面的时候进行设计,比如查询有些字段是可以查询的,在生成页面的时候,会自动把查询条件添加得到页面上,得到自动配置页面。但是这种会有一个弊端,因为如果我要是修改某个字段的查询,页面上不会自动更新,所以这里没有达到页面的查询语句也是动态创建。同理插入和编辑等都是一样的。
- 在这里说一下表结构设计。
首先除了自己设计的表外,又创建了一个产生表,记录下产生的所有表结构情况,把每个表记录个表id,然后记录表的详细信息。
然后有一个关于每一列的数据,记录该列的类型、是否可以查询和列表显示等等。
到这里动态的表结构就算结束了。
- 协同办公
设计:自己偶然的机会接触到协同办公系统 ,这个系统实现了动态实现表的逻辑,包含查询字段、列表显示和关联字段等等。但是由于某些原因,没有看到数据库表结构。
他们的表是动态创建的。动态创建表,然后会添加列字段,不允许删除列,但是列较多的话,有可能会造成数据的冗余,这个数据量不大可以忽略。
- 自己想法
目前来讲动态创建表结构,实现动态配置和页面显示,协同办公的设计很符合要求。即 动态创建表,然后动态增加列属性,然后设计表记录查询字段、编辑字段、新增字段等,并记录每个字段的属性,前端根据字段属性去渲染页面。
我个人感觉目前的难点在于 关联字段的设计和显示,比如字段的id和name的互相转化等, 这些着实有点难操作,还有关联字段的name模糊查询,这些都是要考虑的情况。可能有些系统已经把这个功能实现,只是我们没有机会接触到,希望可以早日理解。
- 展望
自己会继续探索,想出个好的思路,能够动态实现表的自动配置。这种适合简单业务的开发和动态部署,能够节省开发时间,希望可以早日实现。