| 1 | | = Welcome to Trac 1.2.1 |
| 2 | | |
| 3 | | Trac is a '''minimalistic''' approach to '''web-based''' management of |
| 4 | | '''software projects'''. Its goal is to simplify effective tracking and |
| 5 | | handling of software issues, enhancements and overall progress. |
| 6 | | |
| 7 | | All aspects of Trac have been designed with the single goal to |
| 8 | | '''help developers write great software''' while '''staying out of the way''' |
| 9 | | and imposing as little as possible on a team's established process and |
| 10 | | culture. |
| 11 | | |
| 12 | | As all Wiki pages, this page is editable, this means that you can |
| 13 | | modify the contents of this page simply by using your |
| 14 | | web-browser. Simply click on the "Edit this page" link at the bottom |
| 15 | | of the page. WikiFormatting will give you a detailed description of |
| 16 | | available Wiki formatting commands. |
| 17 | | |
| 18 | | "[wiki:TracAdmin trac-admin] ''yourenvdir'' initenv" created |
| 19 | | a new Trac environment, containing a default set of wiki pages and some sample |
| 20 | | data. This newly created environment also contains |
| 21 | | [wiki:TracGuide documentation] to help you get started with your project. |
| 22 | | |
| 23 | | You can use [wiki:TracAdmin trac-admin] to configure |
| 24 | | [http://trac.edgewall.org/ Trac] to better fit your project, especially in |
| 25 | | regard to ''components'', ''versions'' and ''milestones''. |
| 26 | | |
| 27 | | |
| 28 | | TracGuide is a good place to start. |
| 29 | | |
| 30 | | Enjoy! [[BR]] |
| 31 | | ''The Trac Team'' |
| 32 | | |
| 33 | | == Starting Points |
| 34 | | |
| 35 | | * TracGuide -- Built-in Documentation |
| 36 | | * [http://trac.edgewall.org/ The Trac project] -- Trac Open Source Project |
| 37 | | * [http://trac.edgewall.org/wiki/TracFaq Trac FAQ] -- Frequently Asked Questions |
| 38 | | * TracSupport -- Trac Support |
| 39 | | |
| 40 | | For a complete list of local wiki pages, see TitleIndex. |
| | 1 | [[PageOutline(1-5,索引)]] |
| | 2 | = 1.引言 |
| | 3 | |
| | 4 | |
| | 5 | == 1.1.编写目的 |
| | 6 | |
| | 7 | |
| | 8 | [http://139.129.211.72/template/ iProgMan]是为广大软件工程师解决生成代码的问题。在编写程序代码时,通常每个功能模块的基础维护代码逻辑都相同,只是针对的表不同, 根据这其中的规律做成模板,机器就可以根据模板来生成前端和后端的代码了。这样就避开了那些枯燥的重复劳动,使开发人员将时间和精力集中于核心业务,既节省了开发人员的工作时间,也为企业节省了成本。 |
| | 9 | |
| | 10 | |
| | 11 | 通过预先制作的模板,结合用户配置的数据,生成代码。 如果将生成的代码比作工厂中生成出来的产品,那么数据相当于产品的原材料, 而模板则相当于模具,即输入数据,通过模板加工,生产出代码。 |
| | 12 | |
| | 13 | == 1.2. 使用技术 |
| | 14 | |
| | 15 | |
| | 16 | 应用框架使用JAVA语言搭建,用到的主要技术为当前比较流行的开源框架Spring,SpringMVC,mybatis,前端页面使用JSP,脚本使用JQUERY,EASYUI框架。 |
| | 17 | |
| | 18 | = 2.代码生成 |
| | 19 | |
| | 20 | |
| | 21 | 下图为生成代码总流程图:\\ |
| | 22 | [[Image(2.png)]] |
| | 23 | |
| | 24 | [=#point2.1] |
| | 25 | == 2.1.第一步:创建项目 |
| | 26 | |
| | 27 | 登录系统,点击“项目”菜单下的子菜单“项目信息”进入页面,点击“添加”按钮创建项目。 |
| | 28 | |
| | 29 | 下图为创建项目窗口:\\ |
| | 30 | [[Image(2_1.png)]]\\ |
| | 31 | 字段说明:\\ |
| | 32 | * **项目名称:**项目的中文名称。 |
| | 33 | * **项目编码:**项目的英文名称。 |
| | 34 | * **项目类型:**包括非maven项目和maven项目。非maven项目为所需jar包在项目中,无效下载;maven项目为jar包不在项目中,需要通过pom配置从第三方下载;推荐选择非maven项目。 |
| | 35 | * **项目目录:**是生成的类的最外层包,一般也就是公司等组织网址域名的反写 |
| | 36 | * **项目模块:**项目目录的下个目录,一般为项目编码相同 |
| | 37 | |
| | 38 | **''案例说明:''**\\ |
| | 39 | [[Image(step_1.png)]] 图2_1_1 |
| | 40 | |
| | 41 | [[Image(step_2.png)]] 图2_1_2 |
| | 42 | {{{ |
| | 43 | 图2_1_1配置信息对应图2_1_2中的代码,template-demo为“项目编码”,com.idasound.ju321为“项目目录”,tbs为“项目模块” |
| | 44 | }}} |
| | 45 | [=#point2.2] |
| | 46 | == 2.2.第二步:创建数据结构 |
| | 47 | |
| | 48 | [=#point2.2.1] |
| | 49 | === 2.2.1.添加数据库 |
| | 50 | |
| | 51 | |
| | 52 | 点击“数据结构”菜单下的子菜单“库信息”进入页面,点击“添加”按钮添加数据库。\\ |
| | 53 | [[Image(2_2_1.png)]]\\ |
| | 54 | 字段说明:\\ |
| | 55 | * **项目信息:**项目的中文名称,即[#point2.1 2.1第一步:创建项目] 的“项目名称” |
| | 56 | * **库类型:**目前支持mysql和oracle两种数据库 |
| | 57 | * **库名称:**登录数据库需要的链接名 |
| | 58 | * **库用户名:**登录数据库需要的用户名 |
| | 59 | * **库密码:**登录数据库需要的密码 |
| | 60 | * **库地址:**登录数据库需要的主机名或者IP地址 |
| | 61 | * **库端口:**登录数据库需要的端口:一般myslq为3306,oracle为1521 |
| | 62 | * **库描述:**数据库的中文描述信息 |
| | 63 | |
| | 64 | |
| | 65 | **''案例说明:''**\\ |
| | 66 | [[Image(step_2_2_1_1.png)]] 图2_2_1_1 |
| | 67 | {{{ |
| | 68 | 如图2_2_1_1权限系统使用的数据库信息 |
| | 69 | }}} |
| | 70 | |
| | 71 | [=#point2.2.2] |
| | 72 | === 2.2.2.添加表 |
| | 73 | |
| | 74 | 点击“数据结构”菜单下的子菜单“表信息”进入页面,点击“添加”按钮添加表。\\ |
| | 75 | [[Image(2_2_2.png)]]\\ |
| | 76 | 字段说明:\\ |
| | 77 | * **库信息:**数据库的描述信息,即[#point2.2.1 2.2.1添加数据库]的“库描述” |
| | 78 | * **表名称:**数据库中表的名称,为英文名称 |
| | 79 | * **表描述:**对表信息的描述 |
| | 80 | |
| | 81 | **''案例说明:''**\\ |
| | 82 | [[Image(step_2_2_2_1.png)]] 图2_2_2_1 |
| | 83 | [[Image(3.png)]] 图2_2_2_2 |
| | 84 | {{{ |
| | 85 | 如图2_2_2_2为数据库template_demo的模型图,需要配置的数据如图2_2_2_1 |
| | 86 | }}} |
| | 87 | |
| | 88 | [=#point2.2.3] |
| | 89 | === 2.2.3.添加列 |
| | 90 | |
| | 91 | 点击“数据结构”菜单下的子菜单“列信息”进入页面,点击“添加”按钮添加列。\\ |
| | 92 | [[Image(2_2_3.png)]]\\ |
| | 93 | 字段说明:\\ |
| | 94 | * **表信息:**数据库中表的信息,即[#point2.2.2 2.2.2添加表]的“表描述” |
| | 95 | * **列名称:**表中的字段名称,为英文名称 |
| | 96 | * **列描述:**对表中字段含义的解释说明,为中文名称 |
| | 97 | * **列类型:**表中字段的类型,包括字符串,数字,时间 |
| | 98 | * **列是否为空:**表中字段是否为空,页面添加或修改功能做非空校验 |
| | 99 | * **列长度:**表中字段的最大长度,页面添加和修改功能做长度校验 |
| | 100 | [[span(style=color: #FF0000, 快速生成列信息: )]]\\ |
| | 101 | [[span(style=color: #FF0000, 通过目录“数据结构”==>“表信息”进入表信息页面,选择需要添加列的表,点击初始化列信息可快速生成对应表的所有列,不用手动添加每一个列信息)]] |
| | 102 | |
| | 103 | **''案例说明:''**\\ |
| | 104 | [[Image(step_2_2_3_1.png)]] 图2_2_3_1 |
| | 105 | [[Image(step_2_2_3_2.png)]] 图2_2_3_2 |
| | 106 | {{{ |
| | 107 | 如模型图2_2_3_2(用户角色关系表)的列信息需要配置的数据为图2_2_3_1 |
| | 108 | }}} |
| | 109 | |
| | 110 | [=#point2.3] |
| | 111 | == 2.3.第三步:创建页面 |
| | 112 | |
| | 113 | 点击“页面”菜单下的子菜单“页面信息”进入页面,点击“添加”按钮添加页面。\\ |
| | 114 | [[Image(2_3.png)]]\\ |
| | 115 | 字段说明:\\ |
| | 116 | * **项目信息:**项目的中文名称,即[#point2.1 2.1第一步:创建项目] 的“项目名称” |
| | 117 | * **模板信息:**包括通用模板(mysql和oracle两个版),多表关联模板。通用模板适用于 单表和多表操作,多表关联模板只使用于多对多的表结构 |
| | 118 | * **类编码:**页面的英文编码,用于生成java代码的文件名称和jsp的文件夹名称等 |
| | 119 | * **类小写编码:**类编码的第一个首字母小写,一般为骆驼命名法 |
| | 120 | * **页面名称:**页面的中文描述名称 |
| | 121 | |
| | 122 | **''案例说明:''**\\ |
| | 123 | [[Image(step_2_3_1.png)]] 图2_3_1\\ |
| | 124 | [[Image(step_2_3_2.png)]] 图2_3_2\\ |
| | 125 | [[Image(step_2_3_3.png)]] 图2_3_3\\ |
| | 126 | [[Image(step_2_3_4.png)]] 图2_3_4 |
| | 127 | {{{ |
| | 128 | 如图2_3_2为用户角色关系页面的配置,生成代码结构为图2_3_1中红色区域中的内容。图2_3_3为通用模板的展示效果,图2_3_4为多表关联模板展示效果 |
| | 129 | }}} |
| | 130 | |
| | 131 | [=#point2.4] |
| | 132 | == 2.4.第四步:创建页面数据 |
| | 133 | |
| | 134 | |
| | 135 | 点击“页面”菜单下的子菜单“页面数据”进入页面,点击“添加”按钮添加页面数据。\\ |
| | 136 | [[Image(2_4.png)]]\\ |
| | 137 | 字段说明:\\ |
| | 138 | * **表结构:**数据库中表信息,即[#point2.2.2 2.2.2添加表]的“表描述” |
| | 139 | * **表主键列:**数据库中表信息的主键列,每个表有一个主键,一般在增、删、改和关联别的表都需要主键。即[#point2.2.3 2.2.3添加列]的“列描述” |
| | 140 | * **数据名称:**对表结构的中文描述名称 |
| | 141 | * **数据编码:**页面数据的英文名称,同一个页面的数据编码不能重复 |
| | 142 | * **页面信息:**表示添加的数据属于那个页面。该数据为[#point2.3 2.3第三步:创建页面]的“页面名称” |
| | 143 | * **扩展数据:**对页面数据的一个扩展,一般为当前表结构的子表结构。可以通过子表的外键显示当前表结构的所有数据(该数据为[#point2.4 2.4第四步创建页面数据]的“数据名称”) |
| | 144 | * **扩展数据列:**子表结构的外键列信息,和当前表结构的表主键列关联,可进行表关联查询([#point2.2.3 2.2.3添加列]的“列描述”) |
| | 145 | |
| | 146 | **''案例说明:''**\\ |
| | 147 | [[Image(step_2_4_1.png)]] 图2_4_1\\ |
| | 148 | |
| | 149 | [[Image(step_2_4_2.png)]] 图2_4_2\\ |
| | 150 | |
| | 151 | [[Image(step_2_4_3.png)]] 图2_4_3\\ |
| | 152 | |
| | 153 | [[Image(step_2_4_4.png)]] 图2_4_4\\ |
| | 154 | |
| | 155 | [[Image(step_2_4_5.png)]] 图2_4_5 |
| | 156 | {{{ |
| | 157 | 如图2_3_3要展示的用户角色关系页面,需要配置页面需要的对象,如图2_4_5中的t_bs_user_role数据不能展示用户名和角色名称,需要对t_bs_user_role数据中的USER_ID和ROLE_ID扩展.图2_4_1为页面需要的全部对象,图2_4_2是页面展示的主要对象,其中图2_4_3是对图2_4_2中的USER_ID(用户)的扩展对象,图2_4_4是对图2_4_3的ROLE_ID(角色)的扩展对象 |
| | 158 | }}} |
| | 159 | |
| | 160 | [=#point2.5] |
| | 161 | == 2.5.第五步:创建页面数据元素 |
| | 162 | |
| | 163 | |
| | 164 | 点击“页面”菜单下的子菜单“页面元素”进入页面,点击“添加”按钮添加页面元素。\\ |
| | 165 | [[Image(2_5.png)]]\\ |
| | 166 | 字段说明:\\ |
| | 167 | * **页面信息:**页面名称,即[#point2.3 2.3第三步:创建页面]的“页面名称” |
| | 168 | * **数据源信息:**页面需要的数据信息,即2.4第四步:创建页面数据的“数据名称” |
| | 169 | * **列信息:**数据源信息对应的列([#point2.2.3 2.2.3添加列]的“列描述”) |
| | 170 | * **元素名称:**对“列信息”的描述,生成代码页面中显示的中文名称 |
| | 171 | * **类编码:**英文名称,首字母大写,一个页面中的类编码不能重复 |
| | 172 | * **类小写编码:**类编码的首字母小写 |
| | 173 | * **控件类型:**包括输入框,数字输入框,时间,下拉框,动态下拉框,树状下拉框。动态下拉框和树状下拉框为通过接口获取数据 |
| | 174 | * **实际值:**当控件类型为输入框,数字输入框,时间时,该项不填;当控件类型为下拉框时,填写传给服务器的值,多个值中间用英文逗号“,”隔开;当控件类型为动态下拉框,树状下拉框时,填写服务器返回的编码 |
| | 175 | * **显示值:**当控件类型为输入框,数字输入框,时间时,该项不填;当控件类型为下拉框时,填写页面显示的值,和实际值对应,多个值中间用英文逗号“,”隔开;当控件类型为动态下拉框,树状下拉框时,填写服务器返回的编码 |
| | 176 | * **元素参数:**当控件为输入框,数字输入框,时间和下拉框时,该项不填。当控件类型为动态下拉框,配置json数据{"url":"地址"};当地址有参数时需要配置json数据为{"url":"地址","urlParam":[{"key":"参数编码","val":"参数值"}]};当控件和别的控件有联动时需要配置json数据为{"url":"地址","onSelect":[{"relId":"关联控件code(当前页面中“类小写编码”)","relUrlParam":"参数编码"}]},url地址的格式一般格式为 /模块编码([#point2.1 第一步:创建项目]的“项目模块”)/页面编码([#point2.3 第三步:创建页面]的“类小写编码”)/标记code (queryAll为查询全部;queryTree为树形结构) |
| | 177 | [[span(style=color: #FF0000, 快速生成信息:)]]\\ |
| | 178 | [[span(style=color: #FF0000, 通过目录“页面”==>“页面信息”进入页面信息页面,选择需要添加元素的页面,点击初始化页面元素可快速生成对应页面包含数据的所有元素信息,不用手动添加每一条信息,然后修改类的编码,控件类型和删除不需要的元素信息)]] |
| | 179 | |
| | 180 | **''案例说明:''**\\ |
| | 181 | [[Image(step_2_5_1.png)]] 图2_5_1 |
| | 182 | {{{ |
| | 183 | 图2_5_1为用户角色关系页面需要的控件信息 |
| | 184 | }}} |
| | 185 | |
| | 186 | |
| | 187 | [=#point2.6] |
| | 188 | == 2.6.第六步:选择页面显示元素 |
| | 189 | |
| | 190 | |
| | 191 | 点击“页面”菜单下的子菜单“页面配置”进入页面,点击“添加”按钮。\\ |
| | 192 | |
| | 193 | [[Image(2_6.png)]]\\ |
| | 194 | 字段说明:\\ |
| | 195 | * **页面信息:**页面名称,即[#point2.3 2.3第三步:创建页面]的“页面名称” |
| | 196 | * **页面元素:**元素名称,即[#point2.5 2.5第五步:创建页面]数据元素的“元素名称” |
| | 197 | * **显示位置:**包括搜索(列表的查询条件),列表(列表展示),添加(添加页面),修改(修改页面) |
| | 198 | * **显示状态:**包括显示,不显示(控件不可见,一般用于修改的主键元素),不可编辑(添加和修改页面不可以操作) |
| | 199 | * **显示顺序:**页面中元素的显示顺序 |
| | 200 | [[span(style=color: #FF0000,快速生成信息:)]]\\ |
| | 201 | [[span(style=color: #FF0000,当2.5第五步:创建页面数据元素完成后,可以通过目录“页面”==>“页面信息”进入页面信息页面,选择需要添加配置的页面,点击初始化页面配置可快速生成对应页面包含元素的所有页面配置,不用手动添加每一条信息,然后修改显示顺序和删除不需要的配置)]] |
| | 202 | |
| | 203 | **''案例说明:''**\\ |
| | 204 | [[Image(step_2_6_1.png)]] 图2_6_1 |
| | 205 | {{{ |
| | 206 | 图2_6_1为用户角色关系页面搜索,列表,添加和修改区域显示的控件的配置 |
| | 207 | }}} |
| | 208 | |
| | 209 | |
| | 210 | [=#point2.7] |
| | 211 | == 2.7.第七步:生成代码和下载 |
| | 212 | |
| | 213 | |
| | 214 | 点击“项目”菜单下的子菜单“项目信息”进入页面。\\ |
| | 215 | 首先选择要生成的项目,点击生成代码即生成了该项目的所有代码,点击下载可打包下载整个项目。\\ |
| | 216 | 如果修改了页面信息,也可以通过“页面”菜单下的子菜单“页面信息”进入页面,选择修改的页面信息,点击生成代码,可以单独生成单个页面(速度比较快),再进入项目信息页面下载 |
| | 217 | |
| | 218 | |
| | 219 | |
| | 220 | = 3.案例 |
| | 221 | |
| | 222 | 下图为案例的数据库表结构信息: // |
| | 223 | |
| | 224 | |
| | 225 | [[Image(3.png)]]// |
| | 226 | * **t_bs_user:**用户表 |
| | 227 | * **t_bs_role:**角色表 |
| | 228 | * **t_bs_menu:**权限表 |
| | 229 | * **t_bs_user_role:**用户角色关系表 |
| | 230 | * **t_bs_role_menu:**角色权限表 |
| | 231 | |
| | 232 | |
| | 233 | 案例访问地址:[http://iprogman.idasound.com/demo/demo/ http://iprogman.idasound.com/demo/demo/]\\ |
| | 234 | 案例配置访问地址:[http://iprogman.idasound.com/demo/template/ http://iprogman.idasound.com/demo/template/]\\ |
| | 235 | |
| | 236 | |
| | 237 | == 3.1.案例配置数据 |
| | 238 | |
| | 239 | 案例配置数据如下图菜单:\\ |
| | 240 | [[Image(3_1.png)]] |
| | 241 | |
| | 242 | |
| | 243 | == 3.2.案例展示 |
| | 244 | |
| | 245 | |
| | 246 | 案例展示如下图菜单:\\ |
| | 247 | [[Image(3_2.png)]] |
| | 248 | |
| | 249 | |
| | 250 | == 3.3.案例代码 |
| | 251 | |
| | 252 | 代码下载地址:[https://github.com/panpanzhao/template https://github.com/panpanzhao/template]\\ |
| | 253 | |
| | 254 | [[span(style=color: #FF0000,注意:需要修改配置文件/demo/src/main/resources/jdbc.properties的数据库连接配置)]] |
| | 255 | |
| | 256 | |