JeeSite 快速开发平台
官方网站
    • 平台简介
    • 架构特点
    • 技术选型
    • 功能介绍
    • 安装部署
    • 常见问题
    • 目录结构
    • 更新日志
    • Vue 文档
    • BPM 文档
    • Cloud 文档
V4 演示
Vue 演示
💖联系
  • 我要提意见、文档纠错
  • JeeSite 代码库, 请⭐Star关注
  • JeeSite Vue 代码库, 请⭐关注
  • Spring Cloud 微服务架构
  • JeeSite 手机端/移动端
  • Flowable 中国式工作流
  • OAauth2 统一认证服务器
  • 政务内外网环境中间件
  • 访问 ThinkGem 官方博客
  • 点击进入,下拉查看动态
官方网站
    • 平台简介
    • 架构特点
    • 技术选型
    • 功能介绍
    • 安装部署
    • 常见问题
    • 目录结构
    • 更新日志
    • Vue 文档
    • BPM 文档
    • Cloud 文档
V4 演示
Vue 演示
💖联系
  • 我要提意见、文档纠错
  • JeeSite 代码库, 请⭐Star关注
  • JeeSite Vue 代码库, 请⭐关注
  • Spring Cloud 微服务架构
  • JeeSite 手机端/移动端
  • Flowable 中国式工作流
  • OAauth2 统一认证服务器
  • 政务内外网环境中间件
  • 访问 ThinkGem 官方博客
  • 点击进入,下拉查看动态
  • 快速了解

  • 开发手册

    • 快速开始、安装部署
    • 代码生成、表结构 ER 图
      • 引言
      • 表结构数据字典
      • 业务表结构设计
      • 生成代码的流程
        • 1)单表
        • 2)主子表
        • 3)树结构表
        • 4)代码生成示例
      • 代码生成选项说明
        • 表基本信息
        • 表字段信息
        • 表生成信息
      • 自定义生成模板
      • 常见问题
    • 菜单权限、按钮权限、Shiro
    • 数据权限、库事务、Service
    • 持久层、多数据源、Dao
    • 后台常用工具类、Utils
    • Form 表单组件、Beetl
    • Data Grid 表格组件
    • JS 常用工具和组件
    • 修改内置登录页面
    • 国际化、多语言
    • 分离端 API 接口
    • ★ 常见问题 ★
  • 前后分离

  • 功能专题

  • 云服务架构

  • 技术服务与支持

在线代码生成、单表、主子表、树表、数据表结构

# 引言

代码生成是帮助开发者快速生成通用增删改查的工具,一般情况生成后的代码部署后即可运行。

然后对生成后的代码进行布局调整,增加业务代码,实现你的业务。极大地简化了你的基础重复代码编写时间。

# 表结构数据字典

一张图展示 JeeSite 的表接口,表之间的关系:

点击我,看大图。

源文件下载地址:https://gitee.com/thinkgem/jeesite4/blob/v5.1/modules/core/db/core.erm (opens new window)

如果 erm 文件打不开,请使用 Eclipse 安装 ERMaster 插件,菜单 Help -> Install New Software -> Work with:https://thinkgem.github.io/ermasterr/updatesite -> Select All -> 取消 Contact all update site... 复选框 -> 点击 Next 直到 Finish. 也可以手动下载安装插件包安装到 Eclipse:https://gitee.com/thinkgem/ermasterr (opens new window)

ERMaster 是一个轻量级的数据表建模工具,可以很方便的展示表结构、多对一、多对多的场景。
最重要的是,它可以一次建模,导出不同数据库的 DLL 语句,非常方便。

# 业务表结构设计

打开 web 项目下 /db/test.erm 文件,直接复制该文件,添加自己的业务表。

该文件中已经内置了一些字段组,帮助你快速创建(这些字段不用你去每个去编写,而是选择即可)如下:

DataEntity:

字段名 类型 备注
status char(1) 状态(0正常 1删除 2停用 3冻结 4审核 5驳回 9草稿)
create_by varchar(64) 创建者
create_date datetime 创建时间
update_by varchar(64) 更新者
update_date datetime 更新时间
remarks nvarchar(500) 备注

DataEntityNoStatus:

字段名 类型 备注
create_by varchar(64) 创建者
create_date datetime 创建时间
update_by varchar(64) 更新者
update_date datetime 更新时间
remarks nvarchar(500) 备注

TreeEntity:

字段名 类型 备注
parent_code varchar(64) 父级编号
parent_codes varchar(1000) 所有父级编号
tree_sort decimal(10) 本级排序号(升序)
tree_sorts varchar(1000) 所有级别排序号
tree_leaf char(1) 是否最末级
tree_level decimal(4) 层次级别
tree_names nvarchar(1000) 全节点名

BaseEntity:

字段名 类型 备注
id varchar(64) 编码
status char(1) 状态

BaseEntityCorp:

字段名 类型 备注
corp_code varchar(64) 租户代码
corp_name nvarchar(100) 租户名称

ExtendEntity:

字段名 类型 备注
extend_s1 nvarchar(500) 扩展 String 1
extend_s2 nvarchar(500) 扩展 String 2
extend_s3 nvarchar(500) 扩展 String 3
extend_s4 nvarchar(500) 扩展 String 4
extend_s5 nvarchar(500) 扩展 String 5
extend_s6 nvarchar(500) 扩展 String 6
extend_s7 nvarchar(500) 扩展 String 7
extend_s8 nvarchar(500) 扩展 String 8
extend_i1 decimal(19) 扩展 Integer 1
extend_i2 decimal(19) 扩展 Integer 2
extend_i3 decimal(19) 扩展 Integer 3
extend_i4 decimal(19) 扩展 Integer 4
extend_f1 decimal(19,4) 扩展 Float 1
extend_f2 decimal(19,4) 扩展 Float 2
extend_f3 decimal(19,4) 扩展 Float 3
extend_f4 decimal(19,4) 扩展 Float 4
extend_d1 datetime 扩展 Date 1
extend_d2 datetime 扩展 Date 2
extend_d3 datetime 扩展 Date 3
extend_d4 datetime 扩展 Date 4

导出

设计完成后,可以对建模进行导出:DLL语句、Excel文档、HTML文档、Image图片

在空白处右键,选择 Export -> DLL / Excel / HTML,选择生成的路径。

如果导出的是 DLL 在对话框下放可进行多项选择导出的数据库类型。

# 生成代码的流程

# 1)单表

  1. 配置表基本信息,下一步;
  2. 配置表字段信息,必须有一个主键,下一步;
  3. 配置表生成信息,选择“单表/主子表”生成模板,点击“保存并生成代码”按钮;
  4. 配置菜单和权限标识,与Controller里@RequestMapping和@RequiresPermissions对应;
  5. 关闭服务,刷新Eclipse工程,启动服务。

# 2)主子表

  1. 配置主表信息,主表字段,主表生成信息,选择“单表/主子表”模板,先暂存配置;
  2. 配置子表信息,选择父表和当前表,关联父表主键的外键字段,子表字段,下一步;
  3. 回到主表生成界面,点击“保存并生成代码”按钮,可同时生成主表和子表的增删改查代码。
  4. 配置菜单和权限标识,与Controller里@RequestMapping和@RequiresPermissions对应。
  5. 关闭服务,刷新Eclipse工程,启动服务。

# 3)树结构表

  1. 与主子表不同的地方,如下:
  2. 在生成信息选项卡中选择“树表“生成模板。
  3. 设置“树显示编码字段”和“树显示名称字段”即可。

# 4)代码生成示例

可参考初始化脚本自带的 test_data 和 test_tree 两个配置,如下

研发工具菜单中的功能实例代码,都在 web 项目下,进行查看。

(按住 Ctrl + Shift 点击下方链接,新窗口打开)
在线访问:https://demo.jeesite.com/js/a/index#/js/a/gen/genTable/list#代码生成工具 (opens new window)
基本信息:https://demo.jeesite.com/js/a/gen/genTable/form?tableName=test_data&op=step1 (opens new window)
字段配置:https://demo.jeesite.com/js/a/gen/genTable/form?tableName=test_data&op=step2 (opens new window)
生成信息:https://demo.jeesite.com/js/a/gen/genTable/form?tableName=test_data&op=step3 (opens new window)

# 代码生成选项说明

# 表基本信息

  • 表名:物理表表名(实际表名)
  • 表说明:物理表表描述,生成到各个类上
  • 实体类名称:实体类的名称,所有类的前缀
  • 功能作者:开发者姓名,生成到类注释上
  • 关联父表的表名:子表配置的选项,选择父表表名
  • 本表关联的外键名:子表配置的选项,与父表主键关联的字段,也叫外键

# 表字段信息

# 1)字段

  • 列名:数据表定义的字段名称,通过驼峰命名法转换为实体类的字段名
  • 列说明:数据表定义的字段注释,如果注释中带括号,或冒号,则括号中或冒号后的内容不生成到列标签中,只在列注释中体现。
  • 字段类型:数据表定义字段类型
  • 属性类型:也叫Java类型,是实体类的属性字段类型
  • 属性名称:也叫Java字段,是实体类的属性字段名,支持复杂格式:对象名.属性名|属性名2,例如:用户user.userCode|userName,主要用于树选择组件;如果子表,则写主表实体类名+主键,如:formEntity.entityId。
  • 主键:是否是主键字段。选择为“隐藏域字段”代表:自动生成主键;选择为“选择文本域”则代表有用户来手填主键值。
  • 插入:是否是插入字段,如果是则包含在insert语句里
  • 更新:是否是更新字段,如果是则包含在update语句里,不一定不出现在表单上

# 2)列表

  • 列表:是否是列表查询,如果是则包含在列表页的表格列里。
  • 查询:是否是查询字段,如果是则包含在查询页的查询列表里。
  • 匹配方式:查询字段的查询方式,也就是where后的条件表达式,如:字段1=字段2 AND 字段3>字段4 AND 字段5 !=字段6。

# 3)表单

  • 编辑:是否是编辑字段,如果是则包含在update语句里,并出现在表单上
  • 必填:该字段是否可为空,不选代表为必填字段
  • 控件类型:表单中字段生成的样式,如:input,select,treeselect,areatext等等
  • 栅格:就是 BootStrap 的栅格布局,格式:行/标签/输入框(4.3.1后使用 一列、两列、三列 表单布局替代)
  • 新行:该表单控件新起一行生成,也就是生成一个新的
    标签。
  • 字典类型:如果控件类型:下拉框、复选框、单选框,则该字段必须指定一个字典类型,字典类型为字段管理中的字典类型。
  • 字段验证:数值、整数、日期、时间、账号、邮件、手机号、身份证号等。

# 表生成信息

  • 生成模板:单表/主子表(增删改查)、树表/树结构表(增删改查)、业务层和持久层(增删改查)、仅持久层(dao/mapper/entity)
  • 生成包路径:生成在哪个java包下,格式:{包名}/{模块名}/{分层(dao,entity,service,web)}/{子模块名}/{java类} 可从参数设置里修改:“gen.defaultPackageName” 的键值,来修改此默认值。如 com.jeesite.modules
  • 生成模块名:生成包下的模块名称,模块名称下进行分层,也可理解为子系统名,例如 sys
  • 生成子模块名:分层下的文件夹,可选,{分层(entity/dao/service/controller)}/{子模块名}/,可为空。
  • 生成功能名:生成到类注释里。
  • 功能名(简写):生成功能提示,如TAB上、列表上、提示信息(某某成功、某某失败)等。
  • 生成基础路径:填写磁盘绝对路径,若不填写,则生成到当前Web项目下

其它选项

  • 是否有启用停用:生成停用启用功能,生成表必须要有status字段。
  • 是否有删除功能:生成删除数据功能,可删除数据。
  • 是否可上传图片:生成上传图片控件。
  • 是否可上传附件:生成上传文件控件。

# 自定义生成模板

有时根据业务需要,可能会个性化一些代码模板。JeeSite 提供了自定义“代码生成模板”功能。

如果有比较通用的功能,可以更贴合自己的业务编写生成模板,生成对应业务的功能。

你只需要拷贝/jeesite-module-core/src/main/resources/templates/modules/gen/config.xml文件,并重名为config-custom.xml放到任意项目的/src/main/resources/templates/modules/gen/目录下即可,然后修改你的生成配置就可生效。

这个 config.xml 内配置了配置模板的所有信息。

# 常见问题

  • 如何增加 “属性类型” ?请看上一节的“自定义生成模板”,修改config-custom.xml文件的attrType元素里追加类型即可。增加其他选项,如 “控件类型”、“字段验证”,的方法与增加 “属性类型” 同理。
  • 为什么选择 “区域选择” 控件时,编辑表单的时候没有回显区域名称?区域(行政区划)的名称一般是不变的数据,建议在你的业务表里建立 area_code 和 area_name 两个字段,分别存储区域编码和区域名称。代码生成:(1)area_code 的 “属性名称” 里设置 area_code|area_name;(2)area_name 的 “编辑” 对勾去掉。
  • 生成的树表如何实现分页?可以参考 AreaController 类的 listPageData 方法,视图页面 <table id="dataGrid"></table> 下一行增加 <div id="dataGridPage"></div> 即可。
进入 JeeSite 源码仓库页面,点击右上角 ⭐ Star 加星关注。

← 快速开始、安装部署 菜单权限、按钮权限、Shiro→

联系我们:s.jeesite.com  |  微信号:jeesitex  |  邮箱:jeesite@163.com
© 2013-2023 济南卓源软件有限公司 版权所有 | Theme Vdoing

关注 JeeSite 公众号,了解最新动态

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式