这是一个由
JavaFX
,Spring
,FreeMarker
开发的小工具, 能够快速生成数据库对应的实体类、Mybatis Mapper、模板(Controller, Service, DTO等), 使您有更多的时刻去摸鱼。
假如在运用中发现问题或觉得有优化的地方, 欢迎我们提 issue, Thanks!
假如觉得还错的话, 欢迎我们点个 star, !
1. 首要功用概览
- 可视化生成数据库相应的实体类, 不需求再写繁琐的装备文件
- 支撑自定义模板, 快速生成重复代码, 例如:
Controller
,Service
,DTO
等 - 支撑包途径占位符替换
- 支撑范畴模型(
Domain
)的占位符替换 - 支撑
java
文件兼并, 再也不必担心文件被覆盖 - 支撑外部
mybatis-generator
插件导入 - 记录您每一次的变动,
- 这儿讲一下自身运用官方的
mybatis-generator
感受, 当我有多个数据源时, 刚开始我在数据源1
工作, 生成OrderInfo
,OrderInfoMapper
,OrderInfoMapper.xml
三个文件(疏忽了一些字段, 去除了delete update sql), 接着我又在数据源2
工作, 此刻我已经把数据源1
的装备删除, 后来我对数据源1
的order_info
表回复一些之前疏忽的字段, 或许我要去除一个count sql方法, 这时我又要从头装备数据源1
, 而且要比对之前生成的文件, 很是费事。也许你会说, 运用多个装备文件来回切换就能够。当然这也是一种方法。不过我信任当你用了mybatis-friend
, 你应该会扔掉这种想法。
- 这儿讲一下自身运用官方的
2. 版别日志
- v4.0.0
- 重构代码, 优化UI
- 新增了模板功用
- 新增导入导出装备的功用
- 包名支撑占位符替换
- 新增
java
文件 merge 功用, 暂不支撑kotlin
的 merge - 新增范畴包功用
- 新增外部
mybatis-generator
插件导入功用 - 删除了 tk.mybatis 的生成战略
- v2.1.0
- 增加 tk.mybatis 的生成战略
- 增加 mybatis 生成战略(MyBatis3Simple, MyBatis3DynamicSql)
- 优化代码
- v2.0.0
- 增加可挑选的实现 Serializable 接口的功用
- 重构代码
- 优化查找
- 修正一些bug
- v1.1.0
- 增加表查找功用, 左面列表区域运用键盘输入就能够运用
3. 运用
3.1. 增加数据源
- 右上角菜单栏点击文件 -> 增加数据源
阐明:
1.理论上能够支撑一切数据库, 但经过自己测验的只有
mysql
。假如您运用时发现有问题的话, 能够在github
或gitee
提 issue2.新增时默认挑选驱动类型为
mysql
, 请自行修正装备, 驱动类型下拉框只是为了方便您的填写, 并不会影响装备
3.2. 挑选需求导出的表
有两种方法:
1.点击数据源导出会导出数据源下一切表, 别的数据源的改写只是对表从头加载,
并不会对字段从头加载。对字段的从头加载请看3.3. 改写字段。
2.点击表导出(可多选), 或许双击单表导出
3.3. 对需求导出的表进行装备
阐明:
- 表装备, 对想要导出的 sql 句子打上勾
- 表字段装备, 能够疏忽导出字段, 指定导出的特点名(property), 对特点名的类型进行重写(java type), 对特点装备类型处理器(type
handler)
3.4. 装备导出装备
阐明:
1.这儿装备根本都是依据
mybatis-generator
的装备, 装备概况请见官网2.这儿
Bean 包名
,Mapper 包名
,Xml 地址
, 能够运用占位符, 详细请见 占位符
3.4.1. 菜单按钮阐明:
-
增加额定特点
: 能够增加额定的特点, 在Bean 包名
,Mapper 包名
,Xml 地址
中运用${}
占位符来引用,详细请见 占位符 -
保存装备
: 当增加新装备后, 装备不会马上保存至文件, 点击此按钮能够保存装备(别的点击导出也会马上保存) -
导出
: 导出装备 -
下一步
: 当需求运用模板来快速生成代码时, 能够点击此按钮进行进一步的装备
3.4.2. 高档装备
目前高档装备只支撑 mybatis-generator 插件装备, 支撑 .java 后缀文件和 jar 包导入。
3.5. 装备额定模板(可选)
- 额定模板能够用来快速生成重复代码, 例如:
Controller
,Service
,DTO
等。 假如您不需求该功用, 能够在上一步点击导出即可。
3.5.1. 示例模板阐明:
-
colo test
: 表明 cola 架构, 假如你的项目运用的是 cola 架构, 能够运用该模板 -
usual test
: 通用的分层架构
3.5.2. 按钮阐明:
-
增加额定特点
和保存装备
同上 -
导入额定模板
: 从模板库中导入到当时装备中 -
导出
: 导出装备(包含模板文件和 mybatis 文件) -
回来
: 回来上一步
3.5.3. 导入额定模板阐明
模板是从模板库中导入的, 怎么导入请见模板库
3.5.4. 装备模板
装备阐明:
1.
文件输出地址
: 这儿只需求填写相对方位即可, 例如:src/main/java
,XXXX/src/main/java
,前缀途径由上一步中的项目地址/项目名称/
组成。2.
包名
: 例如:com.example.demo
, 这儿包名支撑运用${}
占位符, 例如:com.example.{a}
, 别的也支撑DOMAIN
, 详细请见 占位符
3.5.5. 装备模板库
- 新增 model 模板, model 模板表明 java bean 的模板, 例如:
DTO
。
装备特点阐明:
后缀
: 会增加到数据表表名后边, 例如:order_info
表, 后缀为Model
, 则生成的 bean 名称为OrderInfoModel
Validate 注解
: 表明生成 model 时会依据数据库字段的类型增加相应的注解, 例如:varchar
类型会增加@Length
注解疏忽字段
: 表明生成 model 时会疏忽的字段, 例如:id
字段父类
: 表明生成 model 时 model 承继父类, 例如:BaseModel
- 新增自定义模板(CUSTOM TEMPLATE), 自定义模板表明相似 Service 层的模板, 例如:
OrderService
,OrderServiceImpl
, 需求您手写FreeMarker 文件并导入
自定义模板运用了 FreeMarker 模板引擎
装备特点阐明:
后缀
父类
同上模板文件
: 表明模板文件的途径, 例如:D:/template/OrderService.java.ftl
3.5.5.1. 按钮阐明:
-
保存装备
: 保存当时装备, 假如增加后不保存直接关闭会丢掉装备 -
导入
: 导入勾选后的模板至当时装备
4. 装备存储目录
- 当时用户下
/AppData/Local/MapperGeneratorV2/config
-
config
目录下首要寄存的是数据源装备, 导出装备, 插件装备, 数据表和字段的缓存
假如工具发生错误, 能够试一下清空以上目录。假如还不可, 欢迎提 issue。
5. 日志文件方位
-
windows-exe 版别
: 装置目录下mybatis-friend.log
-
jar 包版别
: jar的同级目录下mybatis-friend.log
6. 怎么自定义开发自己的功用?
该项目大概8000多行代码, 很简单的代码。但您得先有JavaFX
,的基础, 假如您不熟悉 JavaFX
这儿给 B 站的心爱阿婆主《JavaFX没人看系列》做一波广告。
6.1 构建
该项目运用 JavaPackager 打包, 运用 maven 构建, 运用 jdk17, 假如您想自己构建, 能够按照以下过程:
- 执行
mvn clean package
。目前 pom 中的装备只能够打包成 win, 假如要打包成其他平台, 请依据 JavaPackager 在 pom 中修正。 - 在 mapper-generator-javafx-core/target/mybatis-friend 目录下找到
mybatis-friend.exe
, 双击即可运行。
7. 下载
-
mybatis-friend-win.7z
:能够直接运行在windows
-
mybatis-friend-executable.jar
:可执行jar
包, 能够运行在windows
,linux
,mac
等系统, 命令:java -jar mybatis-friend-executable.jar
本项目 github 源码地址:github.com/alansun2/ma…
本项目 gitee 源码地址:gitee.com/alansc/mapp…
本项目 github 下载地址
本项目 gitee 下载地址 (不支撑上传大于 100m 的附件, 所以只能上传 jar 版别)
8. 其他
8.1. 占位符
8.1.1. 哪些地方能够运用占位符?
占位符总体来说能够运用在两个地方:
1.装备, 详细请见如下图:
2.FreeMarker 模板(模板占位符), 详细请见如下图:
8.1.2. 占位符格局
${placeHolder}
留意: 不要运用内置的占位符, 内置占位符表请见 内置占位符
8.1.3. 内置占位符
占位符 | 阐明 | 类型 | 可运用的方位 |
---|---|---|---|
DOMAIN | 范畴, 详细请见8.1.1. | String | 装备, 模板 |
DOMAIN_DESC | 范畴描绘, 详细请见8.1.1. | String | 装备, 模板 |
PACKAGE | 包名 | String | 模板 |
TYPE_NAME_UPPER_CAMEL | 首字母大写驼峰格局的类名 | String | 模板 |
TYPE_NAME_LOWER_CAMEL | 首字母小写驼峰格局的类名 | String | 模板 |
TYPE_NAME_LOWER_HYPHEN | 中划线分割小写格局的类名 | String | 模板 |
CUR_DATE_TIME | 当时时刻 | String | 模板 |
FIELDS_UPPER_CAMELS | 首字母大写的字段 list | List <String> | 模板 |
IGNORE_FIELDS_MAP | 被疏忽的字段 map | Map<String, List<String>> | 模板 |
author | 作者, 来历 3.4.中的作者名称 | String | 模板 |
除此之外还包含首字母大写的驼峰格局的表名, 例如表名为
user_info
, 则占位符为UserInfo
以及加上模板后缀的占位符, 例如表名为user_info
, 则占位符为UserInfoDO
,UserInfoDTO
等等, 详细能够参阅内置模板 AddCmdExe.ftl
8.2. DOMAIN 阐明
8.2.1. 为什么要有 DOMAIN?
您可能会遇到这样的状况, 比方您的原始项目结构是这样的:
com
└── test
└── dao
而您想要生成这样的项目结构:
com
└── test
└── dao
├── order
│ ├── Order.java
│ └── OrderMapper.java
└── user
├── User.java
└── UserMapper.java
能够看到, dao
下面多了 order
和 user
文件夹。原始的 mybatis-generator 是不支撑一次性生成这样的项目结构的
(虽然您能够经过修正装备文件的方法一个个的生成, 但仍是十分繁琐, 有时还会忘记), 所以这就是为什么要有 Domain
的原因。
8.2.2. DOMAIN 能够在哪些方位运用?
其实能够把 DOMAIN
当作普通的占位符, 所以能运用占位符的地方都能够运用 DOMAIN。详细请见占位符
8.2.3. 那么问题来了, DOMAIN
从哪里来呢?
DOMAIN
是从数据表中的备注获取的, 所以想要运用 DOMAIN
, 备注需求契合一定的格局, 格局为 json, 详细如下:
{
"d": "order",
"dd": "订单"
}
阐明:
d
: 范畴, 运用方位请见8.2.2., 占位符名称为DOMAIN
dd
: 范畴描绘, 运用方位为模板, 占位符名称为DOMAIN_DESC
- 详细怎么运用请见占位符
9. 未来开发规划
- 支撑表结构和字段的修正
- 支撑插件特点装备