1、总体介绍
wmframework实现了基于数据库系统代码自动生成,并完成有两种可供选择的代码生成方式:web代码自动生成系统、可安装插件方式。这里我们提倡使用后者;
可自动生成的文件类型如下: domain(pojo),mapping,sql-map-conf.xml,jsp,dao,spring配置文件,struts2配置文件,对于dao、spring配置文件、struts2配置文件不提倡自定义生成,因为系统已实现有通过处理流程框架;
依据客户或系统需求,可自行定义jsp模板。对于xml、java文件等表头注解,格式内容也可自行定义。
2、方式一:web代码自动生成系统
一个基于wmframework自行开发的web代码自动生成系统,提供程序员远程访问,选择并确认当前需要生成数据表。整个代码生成过程在由代码生成系统统一处理,并提供url链接实时下载使用。
主要执行操作对象:
com.wmframework.codegen.ModuleGenerator 代码生成执行接口
com.wmframework.codegen.Convert 数据转换对象
com.wmframework.codegen.replace.FileReplace文件替换对象
com.wmframework.codegen.replace.TempleReplace 行数据模版替换对象
传递后台字符串格式说明
*fnstr参考格式:fn1--fn2--...fnn
*format :fieldname-fieldvalue-type-optionname-vos-vo-functionname
* 0 1 2 3 4 5 6
*desc: 字段名称-字段中文名称-元素类型-下拉集合-vos对象-vo对象ID-执行函数
*example: 用户名称-0-null-oaUser-user1-insertUser
2.1 查询页面生成
进入http://192.168.0.58:8080/autocode/ 主页面,点击转向查询页面生成,选择操作数据表后,系统自动给出“查询条件列”、“查询结果列”、“查询结果数据对象”等,请确保查询条件和查询结果列的正确选择,同时确认当前生成 相关执行函数是否与sqlmap中的名称一致。
查询页面生成模版为: WebRoot/temple/listtmp.jsp
2.2 编辑页面生成
进入http://192.168.0.58:8080/autocode/ 主页面,点击转向编辑页面生成,选择操作数据表后,系统自动给出“新增内容列选择”、“数据对象”等,请确保编辑内容列的正确选择,同时确认当前生成 相关执行函数是否与sqlmap中的名称一致。
编辑页面生成模版为: WebRoot/temple/addtmp.jsp
2.3 查看页面生成
进入http://192.168.0.58:8080/autocode/ 主页面,点击转向明细页面生成,选择操作数据表后,系统自动给出“明细显示列选择”、“结果数据对象”等,请确保编辑内容列的正确选择,同时确认当前生成 相关执行函数是否与sqlmap中的名称一致。
明细页面生成模版为: WebRoot/temple/detailtmp.jsp
3、方式二:插件代码生成器
wmframework代码生成器主要是基于ibatis的插件ibator改写而得
- 使用模式
基于myeclipse插件安装即可。
- 文件类型
当前可自动生成的文件类型如下: domain,mapping,sql-map-conf.xml,jsp,dao,spring配置文件,struts2配置文件(不提倡,当前系统架构有通用action),其中jsp页面存在模板定制
- 生成方式
多工程(多个工程一次全部生成),整库(整个数据表一次全部生成),定制表(自定义需要生成数据表)
一个简单的配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | <? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE ibatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN" "http://ibatis.apache.org/dtd/ibator-config_1_0.dtd" > < ibatorConfiguration > <!-- 当前插件使用序列号 --> < license serialno="302C02144329F4612A8B919AC1B2D22C2ACBB46525A2AD96021473B968B27095B19FB26970AEB3BE79D9BC9F83F3"/> <!-- 加载当前数据库驱动包 --> < classPathEntry location="D:/wmworkspace/ibator/WebRoot/WEB-INF/lib/mysql-connector-java.jar" /> <!-- 定义当前context标志,即当前提供多个Project同时生成 --> < ibatorContext id="context1" projectId="WM"> <!-- 定义contextId(必须),当前工程Id(选填,默认为系统架构简称WM) --> <!-- 工程文件(xml,jsp,js,java,properties等)注解定义,这里可扩展或自行定制 --> < commentGenerator > < property name="title" value="Copyright (c) 2010 WMframework我们团队开发" /> <!-- 文件头 --> < property name="Description" value="" /> <!-- 当前文件功能描述 --> < property name="author" value="warison" /> <!-- 作者 --> < property name="email" value="warison@126.com" /> <!-- 联系方式 --> < property name="verison" value="2.0" /> <!-- 当前版本 --> </ commentGenerator > <!-- 数据库连接JDBC方式定义 --> < jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" userId="root" password="wsc" dbType="mysql" remarks="true" /> <!-- 可选,定义数据库类型(oracle,MYSQL,DB2,SQLSERVER,CLOUDSCAPE,DERBY,HSQLDB,SYBASE,DB2_MF),值不区分大小写 --> <!-- <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@192.168.0.181:1521:zfaq" userId="aqgl" password="elink2010" dbType="oracle" remarks="true"/> --> <!-- 数据模型生成定义 --> < javaModelGenerator targetPackage="com.client.domains" targetProject="D:\wmworkspace\ibator\src" encoding="utf-8"> <!-- 工程路径(绝对路径,插件形式时需要指定context即可), 数据模型存放路径,文件编码方式(可选,不提倡使用) --> <!-- 插件形式下定义 <javaModelGenerator targetPackage="com.domains" targetProject="ibator" > --> < property name="rootClass" value="com.base.ParentDomain" /> <!-- 数据模型父类定义 --> </ javaModelGenerator > <!-- ibatis SQLMAP 生成定义 --> < sqlMapGenerator targetPackage="com.client.mappings" targetProject="D:\wmworkspace\ibator\src" encoding="utf-8" /> <!-- 工程路径(绝对路径,插件形式时需要指定context即可), 数据模型存放路径,文件编码方式(可选,不提倡使用) --> <!-- 插件形式下定义 <javaModelGenerator targetPackage="com.client.mappings" targetProject="ibator" > --> <!-- jsp页面生成定 --> < jspGenerator targetPackage="com.client.jsp" targetProject="D:\wmworkspace\ibator\src" templePackage="" /> < daoGenerator targetPackage="com.client.daos" targetProject="D:\wmworkspace\ibator\src" type="GENERIC-SI" /> <!-- 已经被屏蔽生成了 --> <!-- 全库一次性生成,各属性均采用默认配置 --> <!-- <alltable/> --> <!-- 可定制表生成, 如下定义需要生成表 --> < table tableName="A" domainObjectName="ADomain" > <!-- 可选定义项:listQryFlds 查询条件字段 listResultFlds 查询结果字段 isIdx 是否需要序号列 isCheck是否需要选择列--> < jsplist listQryFlds="user_id,user_name" listResultFlds="user_id,user_name" isIdx="false" isCheck="false"></ jsplist > <!-- 可选定义项:detailFlds 查看显示字段 --> < jspdetail detailFlds="user_id,user_name"></ jspdetail > <!-- 可选定义项:addFlds 新增、修改显示字段 --> < jspadd addFlds="user_id,user_name"></ jspadd > </ table > <!-- <table tableName="sub_a" /> --> <!-- <table tableName="A" domainObjectName="ADomain"> --> <!-- tableName数据表名,数据模型别名定义 --> <!-- 可选,主键生成定义,其实这里也支持某个字段,并非一定为PK --> <!-- 数据库 sql 生成 key形式 sqlStatement: 可定义为数据库类型(DB2,MYSQL,SQLSERVER,CLOUDSCAPE,DERBY,HSQLDB,SYBASE,DB2_MF)或某条可执行sql语句 identity: 是否返回当前生成id type:pre\ post --> <!-- <generatedKey column="USER_ID" sqlStatement="select seq_user_key.nextvalue from dual" identity="false" ></generatedKey> <generatedKey column="USER_ID" sqlStatement="mysql" identity="false" ></generatedKey> --> <!-- classKey 不带参数形式 --> <!-- <classKey column="USER_ID" className="test.util.GenerateSerial" methodName="getUUID" identity="false" ></classKey> --> <!-- 带参数形式 --> <!-- <classKey column="USER_ID" className="test.util.GenerateSerial" methodName="getUUID" identity="false" args="1,2" paramTypes="java.lang.String,int"></classKey> </table> --> </ ibatorContext > </ ibatorConfiguration > |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?