1. 为什么你需要renren-generator
刚接手一个新微服务项目时,最头疼的就是要手动创建几十个表的CRUD代码。我去年做过一个电商项目,光是商品模块就有23张表,如果每个实体类、Mapper、Service都手写,至少得浪费3天时间。这时候renren-generator就像个救星——它能根据数据库表结构,自动生成全套基础代码。
这个脚手架工具特别适合快速启动项目的中小型团队。想象一下,你新建一个订单服务,连上数据库点几下鼠标,5分钟内就能拿到所有表的增删改查接口。实测生成一个包含20张表的微服务模块,比手动编写效率提升10倍不止。
不过要注意,它生成的是基础模板代码。就像装修房子的毛坯房,后续你还得根据业务需求进行二次开发。但至少省去了最枯燥的重复劳动,让开发者能专注在核心业务逻辑上。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 5分钟快速搭建生成环境
2.1 获取项目源码
首先访问码云仓库:
bash复制git clone https://gitee.com/renrenio/renren-generator.git
用IDEA打开项目后,你会看到标准的Spring Boot结构。我建议在pom.xml里先把Spring Boot版本锁定为2.3.x以上,避免依赖冲突。
2.2 配置数据库连接
打开application.yml,修改数据源部分:
yaml复制spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
遇到过一个小坑:如果用的是MySQL 8.0+,记得在pom.xml添加对应驱动:
xml复制<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
2.3 调整生成规则
generator.properties文件控制着代码生成的关键参数:
properties复制# 包路径配置
mainPath=com.yourcompany
package=com.yourcompany.modules
moduleName=order
author=YourName
建议把moduleName改成你的微服务名称,比如"product"或"user"。这样生成的代码包结构会更清晰。
3. 一键生成代码实战
启动应用后访问 http://localhost:80 (默认端口),你会看到一个极简的UI界面。勾选需要生成代码的表,点击生成按钮,控制台会输出类似日志:
code复制生成表:order_info 成功
生成表:order_item 成功
生成的文件结构是这样的:
code复制main
├── java
│ └── com
│ └── yourcompany
│ └── modules
│ └── order
│ ├── controller
│ ├── entity
│ ├── dao
│ └── service
└── resources
└── mapper
└── order
遇到过最坑的问题是:直接复制生成的main目录到项目里,所有类都会报错。这是因为缺少公共依赖。
4. 微服务集成解决方案
4.1 创建公共模块
新建一个common模块,pom.xml关键配置如下:
xml复制<dependencies>
<!-- MyBatis Plus必须 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<!-- 其他公共依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
</dependencies>
4.2 解决类冲突
把renren-generator中这些类复制到common模块:
R.java(统一返回结果)AbstractController.javaPageUtils.javaQuery.java
然后在业务模块的pom中添加:
xml复制<dependency>
<groupId>com.yourcompany</groupId>
<artifactId>common</artifactId>
<version>1.0.0</version>
</dependency>
5. 高级定制技巧
5.1 模板文件修改
如果想自定义生成的代码风格,可以修改resources/template下的vm模板文件。比如要给所有Controller添加Swagger注解:
java复制@Api(tags = "${className}管理")
@RestController
@RequestMapping("/${moduleName}/${pathName}")
public class ${className}Controller {
记得修改后clean再重新编译项目。
5.2 多数据源支持
在application.yml配置多个数据源:
yaml复制spring:
datasource:
db1:
url: jdbc:mysql://localhost:3306/db1
db2:
url: jdbc:mysql://localhost:3306/db2
然后在generator.properties指定:
properties复制# 使用db2数据源
dbName=db2
6. 实际项目中的优化建议
在电商项目中,我们对生成的代码做了这些改进:
- 在Service层添加了**@Transactional**注解
- 统一用Result包装返回结果
- 增加了参数校验注解如**@NotBlank**
- 补充了Swagger接口文档
有个特别实用的技巧:在AbstractController里添加全局异常处理:
java复制@ExceptionHandler(Exception.class)
public Result handleException(Exception e){
log.error(e.getMessage(), e);
return Result.error("系统繁忙");
}
遇到字段类型不匹配时,可以修改resources/generator.properties中的类型映射:
properties复制# 将数据库的tinyint映射为Integer
tinyint=Integer
最后提醒:生成代码后一定要检查Mapper XML文件。有一次我发现它把create_time字段生成了两次,导致插入失败。这种小问题用MyBatis Plus的@TableField注解就能解决。
