告别手写CRUD!用IDEA的EasyCode插件5分钟搞定MyBatis单表代码生成
5分钟极速生成MyBatis代码:IDEA插件实战指南
每次新建数据表都要手动编写Entity、Mapper和XML?还在为重复的CRUD代码消耗时间?试试这款被10万+开发者验证的效率神器——EasyCode。作为IntelliJ IDEA生态中最受欢迎的代码生成插件之一,它能将单表开发效率提升300%以上。本文将带你从零开始掌握这个"生产力核武器"。
1. 为什么需要代码生成工具
传统MyBatis开发中,一个简单的用户表可能需要创建:
- User.java实体类(约50行)
- UserMapper.java接口(约20行)
- UserMapper.xml映射文件(约100行)
按照平均每个表3小时的手工编码计算,一个有20张表的系统需要投入60小时在基础CRUD上。更可怕的是,当字段发生变更时,需要同步修改三个文件——这正是"牵一发而动全身"的典型场景。
目前主流的解决方案有三种:
| 方案 | 生成速度 | 可定制性 | 学习成本 | 适用场景 |
|---|---|---|---|---|
| 手工编码 | 慢 | 完全自由 | 高 | 特殊复杂业务场景 |
| MyBatis Generator | 中 | 中等 | 中 | 传统企业项目 |
| EasyCode插件 | 极快 | 高 | 低 | 敏捷开发场景 |
真实案例:某电商团队在会员系统重构中,使用EasyCode在2天内完成了原本需要2周的基础代码开发,且字段变更时的维护时间从平均1小时/表缩短到5分钟。
2. 环境准备与插件安装
2.1 基础环境要求
- IntelliJ IDEA 2021.3及以上版本(推荐2023.3)
- JDK 1.8+
- 已创建的Spring Boot项目(2.7.x或3.x)
- MySQL 5.7+/PostgreSQL等数据库
2.2 插件安装步骤
打开IDEA的插件市场:
- Windows/Linux:
File -> Settings -> Plugins - macOS:
IntelliJ IDEA -> Preferences -> Plugins
- Windows/Linux:
搜索安装关键插件:
- EasyCode(主代码生成引擎)
- MyBatisX(可选,提供Mapper接口与XML跳转)
安装后重启IDEA,在右侧边栏会出现数据库工具窗口
注意:如果无法访问插件市场,可手动下载插件包,通过
Install Plugin from Disk安装
3. 数据库连接与配置
3.1 创建数据源连接
-- 示例用户表结构 CREATE TABLE `sys_user` ( `id` bigint NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL COMMENT '登录账号', `password` varchar(100) NOT NULL COMMENT '密码', `email` varchar(100) DEFAULT NULL COMMENT '邮箱', `create_time` datetime DEFAULT CURRENT_TIMESTAMP, `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `idx_username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表';点击IDEA右侧的
Database面板选择
+ -> Data Source -> MySQL填写连接信息:
- Host: 本地开发可填
localhost - Port: 默认
3306 - User/Password: 你的数据库凭证
- Database: 选择目标数据库
- Host: 本地开发可填
测试连接成功后,展开可以看到所有表结构
3.2 高级配置技巧
在Advanced标签页中建议设置:
useInformationSchema=true nullCatalogMeansCurrent=true serverTimezone=Asia/Shanghai这可以避免时区问题和元数据读取异常。
4. 代码生成实战演示
4.1 基础生成流程
在Database面板右键目标表
选择
EasyCode -> Generate Code在弹出窗口中配置:
- 生成路径:通常选择
src/main/java - 包结构:如
com.example.module.user - 模板选择:默认包含Entity、Mapper、Service等
- 生成路径:通常选择
点击生成后,项目中将自动创建:
src ├── main │ ├── java │ │ └── com │ │ └── example │ │ └── module │ │ └── user │ │ ├── entity │ │ │ └── SysUser.java │ │ ├── mapper │ │ │ └── SysUserMapper.java │ │ └── service │ │ ├── SysUserService.java │ │ └── impl │ │ └── SysUserServiceImpl.java │ └── resources │ └── mapper │ └── user │ └── SysUserMapper.xml4.2 生成代码示例
自动生成的实体类会包含Lombok注解和字段注释:
@Data @TableName("sys_user") public class SysUser { @TableId(type = IdType.AUTO) private Long id; /** 登录账号 */ private String username; /** 密码 */ private String password; /** 邮箱 */ private String email; private LocalDateTime createTime; private LocalDateTime updateTime; }Mapper接口则已包含常用方法:
public interface SysUserMapper extends BaseMapper<SysUser> { // 自动生成的基础CRUD方法 int insertSelective(SysUser record); SysUser selectByPrimaryKey(Long id); int updateByPrimaryKeySelective(SysUser record); int deleteByPrimaryKey(Long id); }5. 高级定制技巧
5.1 模板引擎配置
EasyCode的强大之处在于支持自定义模板:
- 打开
Settings -> EasyCode -> Template Setting - 可以修改现有模板或新建模板组
- 支持Velocity语法,例如添加Swagger注解:
#foreach($column in $table.columns) #if($column.columnComment && $column.columnComment != "") @ApiModelProperty(value = "${column.columnComment}") #end private $column.javaType $column.javaField; #end5.2 多表关联生成
对于关联查询场景,可以:
- 先分别生成单表代码
- 在
Settings -> EasyCode -> Type Mapper中添加DTO模板 - 使用如下SQL生成关联查询结果:
<resultMap id="UserWithRoleMap" type="com.example.module.user.dto.UserRoleDTO"> <id column="id" property="id"/> <result column="username" property="username"/> <!-- 其他用户字段 --> <collection property="roles" ofType="com.example.module.role.entity.Role"> <id column="role_id" property="id"/> <result column="role_name" property="roleName"/> </collection> </resultMap>5.3 常见问题排查
- 字段类型映射错误:在
Type Mapper中调整Java与数据库类型对应关系 - 生成代码位置错误:检查生成时选择的package路径
- Lombok注解不生效:确保项目已添加Lombok依赖
- XML文件重复生成:取消勾选
Generate Repeated选项
6. 工程化整合建议
在实际项目中,建议采用以下目录结构规范:
src ├── main │ ├── java │ │ └── com │ │ └── example │ │ ├── common # 公共模块 │ │ ├── module # 业务模块 │ │ │ ├── user # 用户模块 │ │ │ │ ├── controller │ │ │ │ ├── dto # 数据传输对象 │ │ │ │ ├── entity │ │ │ │ ├── mapper │ │ │ │ ├── service │ │ │ │ └── vo # 视图对象 │ │ │ └── ... # 其他模块 │ │ └── Application.java │ └── resources │ ├── mapper │ │ └── module # 按模块组织的Mapper │ ├── static │ └── templates对于团队协作,可以将配置好的模板导出为.json文件,分享给其他成员导入使用。在微服务架构中,每个服务独立使用EasyCode生成代码,保持各服务的领域独立性。
