mapleLeaf程序员工具现包含 代码生成工具和扒取工具 两大模块
- 主持多种主流数据库:mysql,oracle,sqlserver,postgresql等;还能很容易的扩展需要支持的数据库。
- 支持多种类型的持久层:mybatis,hibernate等other持久层。
- 支持表之间的复杂关联关系,一对一,一对多,多对一,多对多,单双向的关联。
- 支持模块化生成代码,各模块之间相互独立,互不影响。
- 支持模板文件内容自定义,可自由编辑新增模板,生成自己业务需要的代码。模板使用了freemarker。
- 对视图中的代码生成,很友好;比如:字段表单类型分类,字段所在页面位置标识等。
- 不仅支持默认的java项目的dao,service,controller三层架构,而且支持强大的自定义,只要使用模板中现有的数据编辑模板,可以生成其他编程语言的文件。比如:页面jsp,js等等。还可以自定义参数,比如定义了参数 author作者,date日期等。
- 操作简单,只需要配置config.xml配置文件。
以mysql数据库为例,分别生成mybatis,hibernate。
表结构
CREATE TABLE
sys_user
(
user_id INT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
dept_id INT COMMENT '部门ID',
user_info_id INT COMMENT '用户个人信息ID',
login_name VARCHAR(30) NOT NULL COMMENT '登录账号',
password VARCHAR(50) COMMENT '密码',
user_name VARCHAR(30) NOT NULL COMMENT '用户昵称',
email VARCHAR(50) COMMENT '用户邮箱',
phonenumber VARCHAR(11) COMMENT '手机号码',
sex CHAR(1) DEFAULT '0' COMMENT '用户性别;radio;0:男,1:女,2:未知',
status CHAR(1) DEFAULT '0' COMMENT '账号状态;select;0:正常 ,1:停用',
remark VARCHAR(500) COMMENT '备注',
PRIMARY KEY (user_id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
CREATE TABLE
sys_dept
(
dept_id INT NOT NULL AUTO_INCREMENT COMMENT '部门id',
parent_id INT DEFAULT '0' COMMENT '父部门id',
dept_name VARCHAR(30) COMMENT '部门名称',
leader VARCHAR(20) COMMENT '负责人',
phone VARCHAR(11) COMMENT '联系电话',
status CHAR(1) DEFAULT '0' COMMENT '部门状态;select;0:正常 ,1:停用',
PRIMARY KEY (dept_id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='部门表';
CREATE TABLE
sys_user_info
(
user_info_id INT NOT NULL AUTO_INCREMENT COMMENT '用户个人信息ID',
real_name VARCHAR(30) NOT NULL COMMENT '真实姓名',
address VARCHAR(100) COMMENT '住址',
height DOUBLE COMMENT '身高',
birthday TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON
UPDATE
CURRENT_TIMESTAMP COMMENT '出生日期',
PRIMARY KEY (user_info_id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户个人信息表';
CREATE TABLE
sys_role
(
role_id INT NOT NULL AUTO_INCREMENT COMMENT '角色ID',
role_name VARCHAR(30) NOT NULL COMMENT '角色名称',
status CHAR(1) NOT NULL COMMENT '角色状态;radio;0:正常 ,1:停用',
remark VARCHAR(500) COMMENT '备注',
PRIMARY KEY (role_id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色信息表';
CREATE TABLE
sys_user_role
(
user_id INT NOT NULL COMMENT '用户ID',
role_id INT NOT NULL COMMENT '角色ID',
PRIMARY KEY (user_id, role_id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户和角色关联表';
config.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configure>
<global>
<!--生成代码路径 ,默认项目所在目录-->
<property name="baseDir" value="f:\\code" />
<!--基础包名,默认mapleLeaf.code-->
<property name="basePackage" value="com.test" />
<!-- 实体类名是否去掉表名前缀 ,默认false-->
<property name="deleteTabPrefix" value="true" />
<!-- 全局表名前缀,多个逗号分隔 ,默认""-->
<property name="baseTabPrefix" value="sys_" />
<!-- 表字段是否下划线转驼峰命名 ,默认false-->
<property name="columnCamel" value="true" />
<!-- 持久层框架(mybatis,hibernate,other),默认"mybatis" -->
<property name="persistence" value="hibernate" />
<!-- 一些公共类,工具类,父类等原样输出,不必需(包名=模板文件名(也是类名),多个逗号隔开) -->
<!-- 这里配置了分页类,mybatis分页拦截器, mybatis通用配置-->
<!--
<common>common=Page,common=PageInterceptor,resource=Xml_mybatis</common>
-->
</global>
<!-- 数据库配置 -->
<db>
<!-- 数据库类型(mysql,oracle,sqlserver,postgresql,informix) -->
<dbType>mysql</dbType>
<!-- 数据库名 -->
<dbName>demo2</dbName>
<user>root</user>
<pwd>q123</pwd>
<driver>com.mysql.jdbc.Driver</driver>
<url><![CDATA[jdbc:mysql://localhost:3306/demo2?useUnicode=true&characterEncoding=UTF-8]]></url>
</db>
<!-- 模块化配置,可以配置多个module,
各模块相互独立,name属性为模块名 -->
<module name="test">
<!--
package标签 主要支持大多数 dao,service,controller 三层结构
包名配置,如果为空或没配置,则该包对应的类不会生成代码
-->
<package>
<property name="entityPkg" value="entity"/>
<property name="daoPkg" value="dao"/>
<property name="servicePkg" value="service"/>
<property name="controllerPkg" value="controller"/>
<property name="mapperPkg" value="mapper"/>
</package>
<!--
customArea自定义区域 ,只要提供模板,任意生成代码,
可以说 不仅仅生成java语言
-->
<customArea>
<!-- 自定义生成,可以配置多组标签,不限于java语言,属性customPkg包名,属性suffix 文件后缀;
标签内容为模板文件(不需要后缀),多个逗号分隔-->
<codeFile customPkg="page" suffix="jsp">Jsp_list,Jsp_add,Jsp_view</codeFile>
<!-- 自定义参数设置 ,模板中可以通过${param['author']!}获取参数值 -->
<param key="author" value="mapleLeaf"></param>
</customArea>
<!-- table配置表,属性tabName表名,
exclude排除指定模板代码生成,多个逗号分隔(dao,service,controller,entity,custom)
,prefix表前缀,有全局配置,感觉没什么用了-->
<table tabName="sys_user" prefix="">
<!--
ref标签(单向)关联表,如果需要双向关联 两个table都需配置对应对方的ref
ref所对应的 tabName,必须配置table
ref标签内容为 主表字段=关联表字段,默认可以多组,逗号分隔(推荐单组字段)(多对多时,则为 主表字段=中间表字段)
多对多时:需配置midTabName和midRefCol属性
midTabName中间表 不用配置table;midRefCol属性为(中间表字段=关联表字段)
多对一时:需配置forKey 主表的关联字段(即外键)
一对一时:关联字段(即外键)是否在 主表中,如果是,则配置forKey
-->
<ref tabName="sys_role" type="ManyToMany" midTabName="sys_user_role" midRefCol="role_id=role_id">
user_id=user_id
</ref>
<ref tabName="sys_dept" type="ManyToOne" forKey="dept_id">dept_id=dept_id</ref>
<ref tabName="sys_user_info" type="OneToOne" forKey="user_info_id">
user_info_id=user_info_id
</ref>
<!-- columnGroup字段集合标签,对字段属性设置
exclude:排除字段,多个字段逗号分隔,以下属性一样。
searchPos:页面查询条件;listPos:页面查询结果列表;inputPos:页面表单输入
-->
<columnGroup searchPos="login_name,status"
inputPos="user_id,login_name,email,phonenumber,sex,status">
<!--
column字段标签,可自定义字段属性。
colName:字段名;tagType:表单类型,默认text;labelName:字段文本
column标签内容:字段值
-->
<column colName="sex" tagType="radio" labelName="性别">
0=男,1=女</column>
<column colName="remark" tagType="textarea" />
</columnGroup>
</table>
<table tabName="sys_role">
<ref tabName="sys_user" type="ManyToMany" midTabName="sys_user_role" midRefCol="user_id=user_id">
role_id=role_id
</ref>
</table>
<table tabName="sys_dept" exclude="custom">
<ref tabName="sys_user" type="OneToMany">dept_id=dept_id</ref>
</table>
<table tabName="sys_user_info"></table>
</module>
</configure>
生成的部分代码展示
(有自定义宏标签和函数,temlate/lib/mf.ftl)
获取表字段信息
<#list columns as col>
${col.propName} //实体类属性名
${col.propType} //实体类属性java类型
${col.colName} //表字段名
${col.pk} //是否主键
...
</#list>
//也可以使用 temlate/lib/mf.ftl中的自定义标签<@list>,对null进行了初始化
<@mf.list columns;col>
${col.propName} //实体类属性名
</@mf.list>
获取所有关联表信息
<@mf.list refTables;reftb>
${reftb.entName} //实体类
${reftb.refType} //关联关系 如OneToOne,OneToMany等
${reftb.lowEntName} //实体类名首字母小写,可用作变量名
...
</@mf.list>
获取唯一索引(组合索引)或主键(组合主键)
// 如果表存在主键(组合主键),则uniIdxCols存主键字段
// 如果没有主键,查询唯一索引,取其中一组
// 如果主键,唯一索引都没有,则为空集合
<@mf.list uniIdxCols;col>
${col.colName} //表字段名
${col.propName} //字段对应属性
...
</@mf.list>
扒取登陆用户页面时,通过浏览器工具获取cookies,把HTTP打钩的name,value填进cookie文本域就行:
首先我简单介绍下Leaf服务器,下面这段描述是我摘自github官方README说明: Leaf 游戏服务器框架简介 Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏服务器框架。Leaf 适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器。 Leaf 的关注点: 良好的使用体验。Leaf 总是尽可能的提供简洁和易用的接口,尽可能的提升开发的效率 稳定
Yaf提供了代码生成工具yaf_code generator, 所以也可以通过使用代码生成工具yaf_cg来完成这个简单的入门Demo 例 3.10. 代码生成工具的使用 php-yaf-src/tools/cg/yaf_cg sample 将得到的sample目录, 拷贝到Webserver的documentRoot目录下然后访问: 例 3.11. 在浏览器输入 http://www.y
我正在根据参考指南学习使用Map结构。日食验证是 面向Web开发人员的Eclipse Java EE IDE。版本:开普勒服务版本2 pom。xml如下所示,与参考指南相同 它表示在构建项目时将生成实现代码。但是,它似乎不会在目标/生成的源文件夹下生成
大多数Blockly应用程序需要将块转换为代码以执行。本页描述如何将代码生成器添加到自定义块。 首先,转到generators/目录并选择与您要生成的语言(JavaScript,Python,PHP,Lua,Dart等)相对应的子目录。假设您的代码块不适合现有类别,请创建一个新的JavaScript文件。这个新的JavaScript文件需要包含在<script ...>编辑器的HTML文件中的标记
Jboot 内置了一个简易的代码生成器,可以用来生成model层和Service层的基础代码,在生成代码之前,请先配置jboot.properties关于数据库相关的配置信息,Jboot 代码生成器会通过该配置去链接数据库。 jboot.datasource.type=mysql jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/jbootdemo
遵照此规范,在实际操作中,有许多重复。接下来推荐一款专为本规范量身定做的代码生成器 Laravel 5.x Scaffold Generator。 本扩展支持 5.1 ~ 5.5 版本的 Laravel。 只需要一个命令: 即可生成: $ php artisan make:scaffold Projects --schema="name:string:index,description:text:
注: 内容来自官网资料 Java Generated Code 这个页面准确描述 protocol buffer 编译器为任何给定协议定义生成的java代码。proto2和proto3生成的代码之间的任何不同都将被高亮 - 注意在这份文档中描述的是这些生成代码的不同,而不是基本的消息类/接口,后者在两个版本中是相同的。在阅读这份文档之前你应该先阅读 proto2语言指南 和/或 proto3语言指