# CodeAuto **Repository Path**: poet/CodeAuto ## Basic Information - **Project Name**: CodeAuto - **Description**: 代码生成器,自定义模板。使用Spring + Swing + Freemaker - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 3 - **Created**: 2016-01-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: code-generator **Tags**: None ## README # 代码生成工具 登录数据库,选择表进行代码生成,模板可自定义。模板应该是特殊的,适合自己的代码处理逻辑的,不是为了共用而存在的,所以你可以创建自己个性的模板,生成与众不同的代码或文件,或其它的东西。 ## 架构 - swing可初化操作 - SpringFramework窗口管理bean, 操作数据库 - 采用logback日志记录 ## 模板可用的属性 * 字符串类型 * `${author}` 作者 * `${entity}` `pojo`对象名称 * `${Entity}` `pojo`类名称 * 对象类型,`Table` * `${tb}` 表, 选择的当前表 * `${tb.name}`, 数据库表名 * `${tb.comment}`, 注释 * `${tb.fds}`, 拥有的字段信息 * `${fd}`字段, 不可以单独使用, 一般是对象的属性或集合中遍历出来 * `${fd.pri}`, 是否是主键,布尔类型 * `${fd.name}`, 字段名称 * `${fd.type}`, 字段类型 * `${fd.comment}`, 字段注释 * `${fd.length}`, 字段长度 * `${fd.javaName}`, 类中字段的名称 * `${fd.javaType}`, 字段对应的`java`类型, 比如`Integer`, `Long`等类型, 每个类型呈现不同的样式 * `${fd.htmlLabel}`, 表单`lable` * `${fd.htmlType}`, 共用`input,time,select,radio,checkbox,editor`6大类型 * `${fd.htmlMap}`,只有是`select,radio,checkbox`有内容,存的是`Map` * `${fd.condition}`查询条件或判断条件 * 列表查询条件`=`,`!=`, `like%`,`%like`,`%like%`, `between` * 列表的显示字段长度, 填写数字或百分比,最好一致 * 编辑页面,验证规则,`required`, `number`, `email`, `date` * 集合类型,`List` * `${listEdit}` 编辑字段 * `${listSearch}` 搜索字段 * `${listPage}` 列表显示字段 ## `${fd.htmlType}`的判断条件 * `time`类型,页面显示选择时间时间控件, 由${fd.javaType}决定,即`java.util.Date`类型决定 * `editor`(富文本编辑器), 由`${fd.type}`决定, 每个数据库实现可能不一样,请看具体的实现类 * `select`类型, 由`${fd.comment}`决定, 示例xx{1:x,2:y,3:z}或{男,女,保密} * `radio`类型, 由`${fd.comment}`决定, 示例xx(1:x,2:y,3:z)或[1,2,3] * `checkbox`类型, 由`${fd.comment}`决定, 示例xx[1:x,2:y,3:z],或[1,2,3] * `input`类型,以上类型都不是的, 则是这个类型 > 注:上面说的只是一种约定规则,也可以设定自己的约定规则 ## 支持数据库 目前仅支持Mysql,其它的数据待扩展 ## 自定义模板 可以参考已编写好的示例模板(`CodeAuto/src/main/resources/template/example/`),来写自己的通用的业务逻辑代码 ## 表的主键 表至少需要设定一个主键,用来查看,修改,删除信息的参数 ## 启动 找到Start.java类,运行主函数,即可 > 注意:连接地址的数据名称,用`{}`包含起来, 例如:`jdbc:mysql://192.168.1.241/{testDatabase}`, `testDatabase`是数据库名称 ## end