老实说,用过 MyBatis 的人,大概都经历过“复制粘贴 mapper.xml 模板”的痛苦吧?每次新建个表,mapper、entity、service 一顿手敲,累得像搬砖工。后来出了 MyBatis-Plus,算是解放了一半的手,但那种命令行生成代码的方式吧,说实话,第一次配置的时候也挺懵的。直到遇到了mybatis-plus-generator-ui,我才明白什么叫“点一点就出活”。
一、为什么需要这个 UI?
先说点实话。 MyBatis-Plus 自带的代码生成器确实强大,比如FastAutoGenerator一套配置下来,表结构、字段注释、文件路径统统能生成,但问题是——你得写一堆配置,还得反复调路径。搞快了还容易覆盖旧代码。
而这个mybatis-plus-generator-ui工具,直接提供了一个 Web 界面,打开浏览器,输入数据库连接信息、包路径、表名……点一下“生成”,项目结构就齐活了。零命令行、零配置文件修改,新人都能一看就懂。
二、启动也太简单了吧
它本身其实就是一个基于 Spring Boot 的小工具,直接引入依赖就能跑。 最常见的方式是单独建一个启动类,比如:
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.github.xiaoymin.knife4j.core.util.CommonUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CodeGeneratorApp {
public static void main(String[] args) {
SpringApplication.run(CodeGeneratorApp.class, args);
}
}
运行完之后,访问http://localhost:8888/code,你就能看到熟悉的 Web 界面,界面上左边输入数据库连接信息,右边配置包名、作者、输出路径等,一键搞定。
三、功能细节比你想象的多
很多人第一次看到以为只是个“界面化的代码生成器”,但其实它比官方原版多了不少实用细节:
支持多数据源配置不用改配置文件,你可以直接在界面里切换不同数据库连接,像:
jdbc:mysql://localhost:3306/demo
jdbc:postgresql://localhost:5432/app_db
改完直接点生成,不需要重启。
模板自由修改模板文件是基于 Freemarker 的,你要改 entity、controller 的命名规范、去掉多余注释都行,改完重新加载模板就能用了。
可选生成结构不想生成 Controller?没问题,取消勾选;想要加 Swagger 注解?也有选项,一键启用。
智能命名规则表名带下划线也不用怕,比如user_info会自动生成UserInfo类,还能根据前缀过滤,比如t_开头的表可以自动去掉。
四、一个真实场景
举个我自己项目里的例子。 我们当时要接入一个老旧系统,数据库表足足 150 多张,字段命名还不统一。光是写实体类就得折腾几天。 我用了这个工具后,连上数据库,选中目标表,一次性勾选生成 Controller + Service + Mapper + XML,花了不到三分钟。
生成的代码路径清晰、注释齐全,比如一个简单的用户表生成后,代码就像这样:
@TableName("user_info")
public class UserInfo {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("user_name")
private String userName;
@TableField("email")
private String email;
@TableField("create_time")
private LocalDateTime createTime;
}
然后对应的UserInfoMapper.java也会自动生成:
public interface UserInfoMapper extends BaseMapper<UserInfo> {
}
没有废话,拿来就能用。 你只要在 Service 里写:
@Service
public class UserInfoService extends ServiceImpl<UserInfoMapper, UserInfo> {
}
然后在 Controller 里:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserInfoService userInfoService;
@GetMapping("/list")
public List<UserInfo> list() {
return userInfoService.list();
}
}
这就能跑通一个完整的增删改查接口。整个过程几乎没写几行逻辑代码。
五、一些贴心小功能
除了生成速度快,它还有一些我特别喜欢的小功能,比如:
生成日志可视化每次生成代码,它会在页面实时显示生成进度,比如正在生成哪个包、哪个文件,出了错也能直接看到错误堆栈。
路径记忆它会缓存上一次的输入,比如数据库连接和包名,下次打开不用再填。
支持导出 Zip 包如果不想直接写进项目,也可以导出 zip 包,下载后手动解压。
这些小细节,对一个经常得给多个项目写 CRUD 的开发者来说,真的能省下很多无意义的重复劳动。
六、推荐的使用姿势
我自己的建议是,不要把这个 UI 工具长期挂在生产项目里跑,毕竟它带有生成逻辑,有安全风险。 更好的方式是单独建一个本地工具项目,用完就关。
如果团队成员多,也可以放在内网的工具平台里统一使用,比如一个 DevOps 工具集成平台上开个端口,大家都能用,还能管理模板。
其实说到底,mybatis-plus-generator-ui并不是让你不写代码,而是帮你从那些“毫无意义的重复劳动”中解放出来。 它生成的代码干净、规范,还能自定义模板风格,是真正能提升生产效率的“小而美”工具。
要我说,这种能让项目“从数据库到接口三分钟跑起来”的东西,真不该被低估。 尤其在初期快速搭建项目骨架的时候,它就是一把利器。
有空可以试试——点开浏览器,连个数据库,三分钟后你就会有一种“再也不想手写 Mapper 了”的感觉。