这篇文章主要介绍“怎么使用HouTu根据MySQL生成Java类的开源库”,在日常操作中,相信很多人在怎么使用HouTu根据MySQL生成Java类的开源库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用HouTu根据MySQL生成Java类的开源库”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
HouTu
HouTu,一款基于MySQL的简单易用又功能强大的代码生成工具。取名后土,后土又名後土,源于母系社会自然崇拜中的土地与女性崇拜。其掌阴阳,育万物,因此被称为大地之母。本项目取名HouTu,取义“育万物”之意,通过定制Freemarker模板,可以生成任意结构化的代码,如 DO、Mapper、XML、Service、Controller、SQL、Html等等,只要你能写出模板,HouTu就能交付给你成品代码。
特点
原理简单:HouTu以原生MySQL语句为基础,获取如数据库列表、表详情和列详情等信息,结合Freemarker模板生成Java代码。
可定制模板:HouTu集成Freemarker模板,只要是遵循Freemarker开发的模板都可以自动生成对应的Java代码。
功能强大:支持单表生成、多表生成,理论上支持生成任意结构化的代码。
快速开始
声明入口类
Generator g = new Generator(Config.getInstance()
.setDriver("com.mysql.cj.jdbc.Driver")
.setUrl("jdbc:mysql://127.0.0.1:3306/houtu?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&useLegacyDatetimeCode=false")
.setUsername("root")
.setPassword("root")
.setPrimaryKeyType("Integer")
.setClassPrefix("HouTu")
.setClearClassPrefix("HouTu")
.setOutRootDir(System.getProperty("user.dir") + File.separator + "generator-output"));
Generator.java只提供了一个构造函数,传入系统配置类Config.java
使用API
Generator.java对外提供了四个接口:
Generator#deleteOutRootDir(): 删除输出目录的文件,一般在generate之前调用,清空旧的输出文件
Generator#printAllTableInfo(): 打印所有表信息
Generator#generateAll(): 将所有表生成java文件
Generator#generate(String[]): 指定表名生成java文件,入参为可变参数,如果为空则调用Generator#generateAll()方法
具体使用
//删除生成器的输出目录
g.deleteOutRootDir();
// 打印所有表
g.printAllTableInfo();
// 生成单个表的Java文件
g.generate("sys_user");
输出内容
00:53:57.945 [main] INFO me.zhyd.houtu.Generator - [delete dir] D:\project\java\HouTu\generator-output
00:53:57.955 [main] INFO me.zhyd.houtu.Generator - ----All Table Names Begin----
00:53:57.990 [main] INFO me.zhyd.houtu.Generator - InnoDB - "sys_resources" - utf8_general_ci
00:53:57.992 [main] INFO me.zhyd.houtu.Generator - InnoDB - "sys_role" - utf8_general_ci
00:53:57.992 [main] INFO me.zhyd.houtu.Generator - InnoDB - "sys_role_resources" - utf8_general_ci
00:53:57.992 [main] INFO me.zhyd.houtu.Generator - InnoDB - "sys_user" - utf8_general_ci
00:53:57.992 [main] INFO me.zhyd.houtu.Generator - InnoDB - "sys_user_role" - utf8_general_ci
00:53:57.992 [main] INFO me.zhyd.houtu.Generator - ----All Table Names END----
00:53:57.992 [main] INFO me.zhyd.houtu.Generator - ---------------------------------------------------------------
00:53:57.992 [main] INFO me.zhyd.houtu.Generator - - BEGIN generate by sys_user
00:53:57.992 [main] INFO me.zhyd.houtu.Generator - ---------------------------------------------------------------
00:53:58.077 [main] INFO me.zhyd.houtu.Generator - ---------------------------------------------------------------
00:53:58.078 [main] INFO me.zhyd.houtu.Generator - - BEGIN generate by sys_user
00:53:58.078 [main] INFO me.zhyd.houtu.Generator - ---------------------------------------------------------------
00:53:58.471 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\biz\dto\HouTuSysUserDto.java
00:53:58.476 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\biz\form\HouTuSysUserForm.java
00:53:58.478 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\biz\service\HouTuSysUserService.java
00:53:58.479 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\biz\service\impl\HouTuSysUserServiceImpl.java
00:53:58.481 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\biz\vo\HouTuSysUserVO.java
00:53:58.482 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\controller\render\RenderHouTuSysUserController.java
00:53:58.485 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\controller\RestHouTuSysUserController.java
00:53:58.487 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\persistence\beans\HouTuSysUser.java
00:53:58.490 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\persistence\mapper\HouTuSysUserMapper.java
00:53:58.491 [main] INFO me.zhyd.houtu.Generator - D:\project\java\HouTu\generator-output\persistence\\xml\HouTuSysUserMapper.xml
00:53:58.493 [main] INFO me.zhyd.houtu.core.GeneratorHelper - 程序执行完毕,释放资源...
内置模板
轻量级的代码生成工具。根据模板进行生成,理论上支持任意模板代码的生成。
|-- biz
| |-- dto
| | `-- ${table.className}Dto.java
| |-- service
| | |-- ${table.className}Service.java
| | `-- impl
| | `-- ${table.className}ServiceImpl.java
| `-- vo
| `-- ${table.className}ConditionVO.java
|-- controller
| |-- Rest${table.className}Controller.java
| `-- render
| `-- Render${table.className}Controller.java
|-- persistence
| |-- beans
| | `-- ${table.className}.java
| |-- mapper
| | `-- ${table.className}Mapper.java
| `-- xml
| `-- ${table.className}Mapper.xml
|-- sql
|-- view
| `-- ${table.className}
|-- annotation.include
|-- java_copyright.include
`-- macro.include
定制模板
模板配置项
| 配置项 | 类型 | 示例 | 解释 | 备注 ||:---------------------------|:---------|:---------|:---------||:---------|| classPrefix | String | Light | 生成的类前缀,先去除 clearClassPrefix 再添加 classPrefix | || clearClassPrefix | String | Light | 需要去除的类前缀,先去除 clearClassPrefix 再添加 classPrefix | || driver | String | com.mysql.cj.jdbc.Driver | | || url | String | jdbc:mysql://127.0.0.1:3306/light | | || db | String | light | 选择的数据库,非必填,如果为空会从url中解析 | || username | String | root | 数据库用户名 | || password | String | root | 数据库密码 | || basePackage | String | me.zhyd.xx.core | 根包名 | || beansPackage | String | me.zhyd.light.core.db.persistence.beans | beans包名 | || mapperPackage | String | me.zhyd.xx.core.db.persistence.mapper | mapper接口包名 | || outRootDir | String | D:\project\generator\generator-output | 文件输出路径 | || templatePath | String | template/ | 模板路径,基于当前项目路径 | || table | JSONObject | object | 表信息 | |
table 配置项
| 配置项 | 类型 | 示例 | 解释 | 备注 ||:---------------------------|:---------|:---------|:---------||:---------|| type | String | BASE TABLE | 数据表类型 | || db | String | light | 数据库名 | || tableName | String | links | 数据表名 | || coding | String | utf8mb4_general_ci | 数据表编码 | || createTime | String | 2020-04-26 13:25:37 | 数据表创建时间 | || engine | String | InnoDB | 数据表引擎 | || remark | String | | 数据表注释 | || className | String | LightLinks | 待生成的类名 | || classNameFirstLower | String | lightLinks | 首字母小写的类名 | || classNameFirstUpper | String | LightLinks | 首字母大写的类名 | || columns | JSONArray | array | 列信息 | |
table.columns 配置项
| 配置项 | 类型 | 示例 | 解释 | 备注 ||:---------------------------|:---------|:---------|:---------||:---------|| tableName | String | links | 表名 | || keyType | String | PRI | 键类型(PRI 主键) | || columnName | String | id | 列名 | || columnNameFirstLower | String | id | 列名首字母小写 | || columnNameFirstUpper | String | Id | 列名首字母大写 | || notNull | Boolean | true | 是否允许为空 | || length | Integer | 0 | 长度 | || scale | Integer | 0 | 精度,当为浮点数字类型时可用 | || remark | String | | 列注释 | || columnType | String | bigint | 列对应的数据库数据类型 | || jdbcType | String | BIGINT | 列对应的JDBC数据类型 | || javaType | String | java.lang.String | 列对应的Java数据类型 | || possibleShortJavaType | String | String | | || extra | String | auto_increment | 额外参数,auto_increment表自增 | |
待完成的功能
支持引用环境变量: ${env.JAVA_HOME} or System.properties: ${user.home}
自定义模板配置路径(当前是基于项目根目录的)
到此,关于“怎么使用HouTu根据MySQL生成Java类的开源库”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。