1. 若依框架前后端不分离版代码生成入门
刚接触若依框架时,我被它的代码生成功能惊艳到了。作为一个长期奋战在CRUD代码堆里的开发者,第一次看到仅用几分钟就能生成完整的学生管理系统界面,那种感觉就像发现了新大陆。若依框架的前后端不分离版本特别适合需要快速开发内部管理系统的团队,它能帮你省去至少70%的重复编码工作。
这里说的前后端不分离模式,指的是前端页面和后端代码耦合在同一个项目中。与现在流行的前后端分离架构不同,这种模式最大的优势就是部署简单——你只需要启动一个服务,所有功能都能跑起来。我在实际项目中发现,对于中小型管理系统或者需要快速交付的原型项目,这种模式反而更高效。
代码生成功能是若依框架的核心亮点之一。它基于数据库表结构,自动生成包含增删改查在内的全套功能代码。我做过对比测试,手工编写同样的学生管理模块至少需要8小时,而用若依生成代码加上调整时间,2小时内就能搞定。不过要注意的是,这个功能最适合标准化的业务模块,如果是特别复杂的定制化需求,可能还是需要手动开发。
2. 数据库表设计与创建
2.1 表结构设计规范
在开始生成代码前,合理的表结构设计是关键。根据我的踩坑经验,若依的代码生成器对表结构有一些隐式要求。首先表名最好采用下划线命名法,比如stu_student,前缀stu_表示学生模块,这样生成的代码结构会更清晰。我在一个项目中偷懒直接用了student作为表名,结果生成的代码和其他模块混在一起,后期维护特别麻烦。
字段设计也有讲究。每个表必须有主键,通常用自增ID就行。字段注释一定要写完整,因为代码生成器会把这些注释直接作为前端表单的label显示。比如student_name varchar(30) default '' comment '学生姓名',这样生成的页面上就会显示"学生姓名"而不是字段名。
对于状态类字段,建议使用char(1)类型,并用0/1这样的数字表示不同状态。例如性别字段可以这样设计:student_sex char(1) default '0' comment '性别(0男 1女 2未知)'。这样生成的代码会自动包含下拉选择框,不需要额外处理。
2.2 实际建表SQL示例
下面是我优化过的学生表创建SQL,比原始文章中的更完善:
DROP TABLE IF EXISTS stu_student; CREATE TABLE stu_student ( student_id int(11) NOT NULL AUTO_INCREMENT COMMENT '学生ID', student_no varchar(20) NOT NULL COMMENT '学号', student_name varchar(30) NOT NULL DEFAULT '' COMMENT '学生姓名', student_age int(3) DEFAULT NULL COMMENT '年龄', student_hobby varchar(30) DEFAULT '' COMMENT '爱好(0代码 1音乐 2电影)', student_sex char(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)', student_status char(1) DEFAULT '0' COMMENT '状态(0在读 1休学 2退学)', student_birthday datetime DEFAULT NULL COMMENT '出生日期', create_by varchar(64) DEFAULT '' COMMENT '创建者', create_time datetime DEFAULT NULL COMMENT '创建时间', update_by varchar(64) DEFAULT '' COMMENT '更新者', update_time datetime DEFAULT NULL COMMENT '更新时间', remark varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (student_id), UNIQUE KEY (student_no) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';这个SQL有几个改进点:
- 增加了学号字段并设置为唯一键
- 添加了若依框架标准的管理字段(create_time, update_time等)
- 使用utf8mb4字符集支持emoji
- 状态字段的值定义更明确
执行完这个SQL后,建议插入几条测试数据,方便后续验证生成的代码功能是否正常。
3. 项目模块配置
3.1 新建业务模块
在若依框架中,每个业务功能最好单独建一个模块。我习惯在ruoyi-admin模块下创建新的package,比如com.ruoyi.project.student。这样做的目的是保持代码结构清晰,也便于后期维护。
具体操作步骤:
- 在IDEA中右键项目 → New → Module
- 选择Maven模块,命名格式建议为
ruoyi-student - 在pom.xml中添加对
ruoyi-common的依赖
3.2 依赖关系配置
依赖配置是新手最容易出错的地方。除了原始文章提到的三个基本依赖外,根据我的经验还需要特别注意:
<!-- 在ruoyi-student的pom.xml中添加 --> <dependencies> <!-- 基础依赖 --> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-common</artifactId> <version>${ruoyi.version}</version> </dependency> <!-- 若依系统模块 --> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-system</artifactId> <version>${ruoyi.version}</version> </dependency> <!-- 代码生成需要 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </dependency> </dependencies>配置完成后,一定要执行mvn clean install确保依赖下载完整。我遇到过好几次因为依赖没下载完整导致代码生成失败的情况。
4. 代码生成实战
4.1 菜单与代码生成配置
登录若依系统后,进入"系统工具"→"代码生成"页面。点击"导入表",选择刚才创建的stu_student表。这里有个小技巧:可以先在数据库中多创建几个测试表,一次性导入,能节省不少时间。
生成配置有几个关键点需要注意:
- 作者名:会出现在生成的Java类注释中
- 包路径:建议用
com.ruoyi.project.模块名 - 模块名:这个要和菜单名称对应,比如"学生管理"
- 业务名:建议用英文,比如"student"
- 上级菜单:选择这个功能要挂在哪个菜单下
4.2 生成代码与整合
点击"生成代码"按钮后,会下载一个zip包。解压后你会看到完整的代码结构:
- main/java:后端Java代码
- main/resources:Mapper XML文件
- main/webapp:前端页面文件
整合步骤:
- 将Java代码复制到对应的模块package中
- 把XML文件放到resources下的mapper目录
- 前端页面文件放到
ruoyi-admin/src/main/webapp/WEB-INF/views下对应的目录
这里有个大坑要注意:前端文件路径必须和生成配置中的"前端路径"一致。我有次因为路径不对导致一直报404,排查了半天才发现问题。
5. 常见问题排查
5.1 404错误解决方案
404是最常见的错误,根据我的经验主要有三个原因:
- 前端文件放错位置:检查html文件是否在正确的views子目录下
- 菜单配置错误:在系统管理→菜单管理中确认路径是否正确
- 缓存问题:清理浏览器缓存,或者用Ctrl+F5强制刷新
5.2 缓存问题深度处理
前后端不分离项目特别容易遇到缓存问题。除了清理浏览器缓存外,还可以在application.yml中配置:
spring: resources: chain: cache: false static-locations: classpath:/static/这样开发环境下就不会缓存静态资源了。生产环境建议还是保持缓存,但可以通过在引用资源时加版本号的方式解决缓存问题。
5.3 业务名冲突问题
当模块名和业务名相同时,确实会出现识别问题。比如模块叫"student",业务名也叫"student",可能会导致路径冲突。我的解决方案是:
- 业务名加前缀,比如"base_student"
- 手动修改Controller中的RequestMapping
- 同步调整前端html中的路径引用
6. 高级优化技巧
6.1 生成代码后的结构调整
自动生成的代码虽然能用,但通常需要做一些优化:
- 将Service接口和实现分离
- 添加参数校验注解
- 增加日志记录
- 补充Swagger接口文档
6.2 自定义模板修改
若依支持自定义代码生成模板。在ruoyi-generator模块的resources/templates下可以看到所有模板文件。比如想修改前端列表页:
- 复制vm模板文件到指定目录
- 修改表格列配置
- 调整查询条件样式
- 重新生成代码
6.3 多表关联处理
对于需要多表关联的业务,建议:
- 先在数据库创建好外键关系
- 在代码生成时选择主表
- 生成后再手动添加关联查询逻辑
- 前端页面通过二次开发实现关联数据显示
我在实际项目中发现,虽然若依的代码生成功能很强大,但真正提升开发效率的关键在于理解它的设计思想,然后根据项目需求做适当调整。刚开始可能会遇到各种问题,但只要掌握了这些技巧,开发效率会有质的飞跃。