这是一个由 JavaFX, Spring, FreeMarker开发的小工具, 能够快速生成数据库对应的实体类Mybatis Mapper模板(Controller, Service, DTO等), 使您有更多的时刻去摸鱼。

假如在运用中发现问题或觉得有优化的地方, 欢迎我们提 issue, Thanks!

假如觉得还错的话, 欢迎我们点个 star, !

1. 首要功用概览

  1. 可视化生成数据库相应的实体类, 不需求再写繁琐的装备文件
  2. 支撑自定义模板, 快速生成重复代码, 例如: Controller, Service, DTO
  3. 支撑包途径占位符替换
  4. 支撑范畴模型(Domain)的占位符替换
  5. 支撑 java 文件兼并, 再也不必担心文件被覆盖
  6. 支撑外部 mybatis-generator 插件导入
  7. 记录您每一次的变动,
    • 这儿讲一下自身运用官方的 mybatis-generator 感受, 当我有多个数据源时, 刚开始我在数据源1工作, 生成OrderInfo, OrderInfoMapper, OrderInfoMapper.xml三个文件(疏忽了一些字段, 去除了delete update sql), 接着我又在数据源2工作, 此刻我已经把数据源1的装备删除, 后来我对数据源1order_info表回复一些之前疏忽的字段, 或许我要去除一个count sql方法, 这时我又要从头装备数据源1, 而且要比对之前生成的文件, 很是费事。也许你会说, 运用多个装备文件来回切换就能够。当然这也是一种方法。不过我信任当你用了mybatis-friend, 你应该会扔掉这种想法。

2. 版别日志

  • v4.0.0
  1. 重构代码, 优化UI
  2. 新增了模板功用
  3. 新增导入导出装备的功用
  4. 包名支撑占位符替换
  5. 新增 java 文件 merge 功用, 暂不支撑 kotlin 的 merge
  6. 新增范畴包功用
  7. 新增外部 mybatis-generator 插件导入功用
  8. 删除了 tk.mybatis 的生成战略
  • v2.1.0
  1. 增加 tk.mybatis 的生成战略
  2. 增加 mybatis 生成战略(MyBatis3Simple, MyBatis3DynamicSql)
  3. 优化代码
  • v2.0.0
  1. 增加可挑选的实现 Serializable 接口的功用
  2. 重构代码
  3. 优化查找
  4. 修正一些bug
  • v1.1.0
  1. 增加表查找功用, 左面列表区域运用键盘输入就能够运用

3. 运用

3.1. 增加数据源

  1. 右上角菜单栏点击文件 -> 增加数据源

摸鱼工具,谁用谁知道 - javafx mybatis generator

摸鱼工具,谁用谁知道 - javafx mybatis generator

阐明:

1.理论上能够支撑一切数据库, 但经过自己测验的只有 mysql。假如您运用时发现有问题的话, 能够在 githubgitee 提 issue

2.新增时默认挑选驱动类型为 mysql, 请自行修正装备, 驱动类型下拉框只是为了方便您的填写, 并不会影响装备

3.2. 挑选需求导出的表

有两种方法:

1.点击数据源导出会导出数据源下一切表, 别的数据源的改写只是对表从头加载,
并不会对字段从头加载。对字段的从头加载请看3.3. 改写字段。

摸鱼工具,谁用谁知道 - javafx mybatis generator

2.点击表导出(可多选), 或许双击单表导出

摸鱼工具,谁用谁知道 - javafx mybatis generator

3.3. 对需求导出的表进行装备

摸鱼工具,谁用谁知道 - javafx mybatis generator

摸鱼工具,谁用谁知道 - javafx mybatis generator

阐明:

  1. 表装备, 对想要导出的 sql 句子打上勾
  2. 表字段装备, 能够疏忽导出字段, 指定导出的特点名(property), 对特点名的类型进行重写(java type), 对特点装备类型处理器(type
    handler)

3.4. 装备导出装备

摸鱼工具,谁用谁知道 - javafx mybatis generator

阐明:

1.这儿装备根本都是依据 mybatis-generator的装备, 装备概况请见官网

2.这儿 Bean 包名, Mapper 包名, Xml 地址, 能够运用占位符, 详细请见 占位符

3.4.1. 菜单按钮阐明:

  1. 增加额定特点: 能够增加额定的特点, 在 Bean 包名, Mapper 包名, Xml 地址 中运用 ${} 占位符来引用,详细请见 占位符
  2. 保存装备: 当增加新装备后, 装备不会马上保存至文件, 点击此按钮能够保存装备(别的点击导出也会马上保存)
  3. 导出: 导出装备
  4. 下一步: 当需求运用模板来快速生成代码时, 能够点击此按钮进行进一步的装备

3.4.2. 高档装备

目前高档装备只支撑 mybatis-generator 插件装备, 支撑 .java 后缀文件和 jar 包导入。

摸鱼工具,谁用谁知道 - javafx mybatis generator

摸鱼工具,谁用谁知道 - javafx mybatis generator

3.5. 装备额定模板(可选)

  1. 额定模板能够用来快速生成重复代码, 例如: Controller, Service, DTO 等。 假如您不需求该功用, 能够在上一步点击导出即可。

摸鱼工具,谁用谁知道 - javafx mybatis generator

摸鱼工具,谁用谁知道 - javafx mybatis generator

3.5.1. 示例模板阐明:

  1. colo test: 表明 cola 架构, 假如你的项目运用的是 cola 架构, 能够运用该模板
  2. usual test: 通用的分层架构

3.5.2. 按钮阐明:

  1. 增加额定特点保存装备同上
  2. 导入额定模板: 从模板库中导入到当时装备中
  3. 导出: 导出装备(包含模板文件和 mybatis 文件)
  4. 回来: 回来上一步

3.5.3. 导入额定模板阐明

模板是从模板库中导入的, 怎么导入请见模板库

摸鱼工具,谁用谁知道 - javafx mybatis generator

3.5.4. 装备模板

摸鱼工具,谁用谁知道 - javafx mybatis generator

装备阐明:

1.文件输出地址: 这儿只需求填写相对方位即可, 例如: src/main/java, XXXX/src/main/java,前缀途径由上一步中的项目地址/项目名称/组成。

2.包名: 例如: com.example.demo, 这儿包名支撑运用 ${} 占位符, 例如: com.example.{a}, 别的也支撑DOMAIN, 详细请见 占位符

3.5.5. 装备模板库

  1. 新增 model 模板, model 模板表明 java bean 的模板, 例如: DTO

摸鱼工具,谁用谁知道 - javafx mybatis generator

装备特点阐明:

  1. 后缀: 会增加到数据表表名后边, 例如: order_info 表, 后缀为 Model, 则生成的 bean 名称为 OrderInfoModel
  2. Validate 注解: 表明生成 model 时会依据数据库字段的类型增加相应的注解, 例如: varchar 类型会增加 @Length 注解
  3. 疏忽字段: 表明生成 model 时会疏忽的字段, 例如: id 字段
  4. 父类: 表明生成 model 时 model 承继父类, 例如: BaseModel
  1. 新增自定义模板(CUSTOM TEMPLATE), 自定义模板表明相似 Service 层的模板, 例如: OrderService, OrderServiceImpl, 需求您手写FreeMarker 文件并导入

摸鱼工具,谁用谁知道 - javafx mybatis generator

自定义模板运用了 FreeMarker 模板引擎

装备特点阐明:

  1. 后缀 父类 同上
  2. 模板文件: 表明模板文件的途径, 例如: D:/template/OrderService.java.ftl
3.5.5.1. 按钮阐明:
  1. 保存装备: 保存当时装备, 假如增加后不保存直接关闭会丢掉装备
  2. 导入: 导入勾选后的模板至当时装备

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, 假如您想自己构建, 能够按照以下过程:

  1. 执行 mvn clean package。目前 pom 中的装备只能够打包成 win, 假如要打包成其他平台, 请依据 JavaPackager 在 pom 中修正。
  2. 在 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.装备, 详细请见如下图:

摸鱼工具,谁用谁知道 - javafx mybatis generator

摸鱼工具,谁用谁知道 - javafx mybatis generator

2.FreeMarker 模板(模板占位符), 详细请见如下图:

摸鱼工具,谁用谁知道 - javafx mybatis generator

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 下面多了 orderuser 文件夹。原始的 mybatis-generator 是不支撑一次性生成这样的项目结构的
(虽然您能够经过修正装备文件的方法一个个的生成, 但仍是十分繁琐, 有时还会忘记), 所以这就是为什么要有 Domain 的原因。

8.2.2. DOMAIN 能够在哪些方位运用?

其实能够把 DOMAIN 当作普通的占位符, 所以能运用占位符的地方都能够运用 DOMAIN。详细请见占位符

8.2.3. 那么问题来了, DOMAIN 从哪里来呢?

DOMAIN 是从数据表中的备注获取的, 所以想要运用 DOMAIN, 备注需求契合一定的格局, 格局为 json, 详细如下:

{
"d": "order",  
"dd": "订单"  
}  

阐明:

  1. d: 范畴, 运用方位请见8.2.2., 占位符名称为 DOMAIN
  2. dd: 范畴描绘, 运用方位为模板, 占位符名称为 DOMAIN_DESC
  3. 详细怎么运用请见占位符

9. 未来开发规划

  1. 支撑表结构和字段的修正
  2. 支撑插件特点装备