若依框架代码生成器实战5分钟构建学生管理系统记得刚入行时我总在深夜对着屏幕敲打重复的CRUD代码直到发现若依的代码生成器——那种感觉就像第一次用上电动牙刷再也回不去了。今天要分享的正是这个能让你告别996的作弊器特别针对前后端不分离版本的若依框架。我们以学生管理系统为例看看如何用5分钟完成过去需要半天的工作量。1. 环境准备与框架启动1.1 获取若依基础框架从Gitee官方仓库克隆最新稳定版当前推荐4.7.8版本git clone https://gitee.com/y_project/RuoYi.git注意国内用户建议使用Gitee而非GitHub下载速度更快且无需特殊网络配置1.2 数据库初始化创建数据库后导入两个关键SQL文件位置在/sql目录quartz.sql- 定时任务模块表结构ry_2023xxxx.sql- 核心业务表结构修改ruoyi-admin模块下的application-druid.yml配置你的数据库连接信息# 数据源配置 spring: datasource: druid: url: jdbc:mysql://localhost:3306/ry?useSSLfalse username: root password: yourpassword1.3 启动验证在IntelliJ IDEA中右键RuoYiApplication- Run访问http://localhost:80使用默认账号admin/123456登录若看到如下菜单说明启动成功系统管理 | 系统监控 | 系统工具 | 代码生成2. 数据库设计与代码生成2.1 学生表结构设计在MySQL中执行以下DDL建议使用Navicat或DBeaver可视化工具CREATE TABLE stu_student ( student_id int(11) NOT NULL AUTO_INCREMENT COMMENT 学号, student_name varchar(50) NOT NULL COMMENT 姓名, student_age tinyint(3) DEFAULT NULL COMMENT 年龄, student_sex char(1) DEFAULT 0 COMMENT 性别0男 1女, class_id int(11) DEFAULT NULL COMMENT 班级ID, entrance_date date DEFAULT NULL COMMENT 入学日期, status char(1) DEFAULT 0 COMMENT 状态0在读 1休学 2毕业, PRIMARY KEY (student_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT学生信息表;2.2 配置代码生成器关键配置位于ruoyi-generator模块的generator.ymlgen: author: YourName packageName: com.ruoyi.student autoRemovePre: true # 自动去除表前缀 tablePrefix: stu_ # 需要去除的前缀2.3 生成界面操作步骤进入【系统工具】→【代码生成】点击【导入表】选择stu_student在生成配置中设置模块名student业务名manage功能名学生信息点击【生成代码】下载ZIP包提示勾选树表结构可生成带层级关系的代码适合班级-学生这类关联数据3. 代码集成与定制开发3.1 新建业务模块在父pom.xml同级目录创建ruoyi-student模块关键依赖配置dependencies !-- 必须引入的公共模块 -- dependency groupIdcom.ruoyi/groupId artifactIdruoyi-common/artifactId /dependency !-- 若需要数据权限控制 -- dependency groupIdcom.ruoyi/groupId artifactIdruoyi-framework/artifactId /dependency /dependencies3.2 后端代码结构解压生成的ZIP包后将文件按以下结构放置src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── ruoyi/ │ │ └── student/ │ │ ├── controller/StudentController.java │ │ ├── domain/Student.java │ │ ├── mapper/StudentMapper.java │ │ └── service/IStudentService.java │ └── resources/ │ └── mapper/student/StudentMapper.xml3.3 前端页面调整将生成的Vue文件放入ruoyi-admin/ └── src/ └── views/ └── student/ └── manage/ ├── index.vue # 列表页 └── form.vue # 表单页需要手动修改的地方在src/api/student/manage.js中添加API调用方法在src/store/modules/permission.js中添加路由权限4. 高级定制与避坑指南4.1 业务逻辑扩展在生成的Service层添加复杂查询逻辑示例public ListStudent selectStudentsWithClass(Student student) { return studentMapper.selectStudentsWithClass(student); }对应的Mapper XML需添加select idselectStudentsWithClass resultMapStudentResult SELECT s.*, c.class_name FROM stu_student s LEFT JOIN sys_class c ON s.class_id c.class_id where if teststudentName ! null and studentName ! AND s.student_name like concat(%, #{studentName}, %) /if if teststatus ! null and status ! AND s.status #{status} /if /where /select4.2 常见问题解决方案问题1页面按钮权限不显示解决方法检查sys_role_menu表是否有对应菜单权限确认前端store/modules/permission.js路由配置正确问题2日期字段显示异常在实体类添加注解JsonFormat(pattern yyyy-MM-dd) private Date entranceDate;问题3分页查询失效确保Controller方法包含分页参数GetMapping(/list) public TableDataInfo list(Student student) { startPage(); // 关键分页方法 ListStudent list studentService.selectStudentList(student); return getDataTable(list); }4.3 性能优化建议在application.yml中添加MyBatis二级缓存配置mybatis: configuration: cache-enabled: true对于大数据量表建议在Mapper.xml中添加分页优化select idselectStudentList resultMapStudentResult SELECT * FROM stu_student include refidselectStudentVo/ ORDER BY student_id DESC LIMIT #{offset}, #{pageSize} /select前端表格启用虚拟滚动修改index.vueel-table :datastudentList v-loadingloading row-keystudentId :tree-props{children: children, hasChildren: hasChildren} selection-changehandleSelectionChange :heighttableHeight5. 项目实战学生管理增强功能5.1 批量导入导出在Controller中添加PostMapping(/importData) public AjaxResult importData(MultipartFile file) throws Exception { ExcelUtilStudent util new ExcelUtil(Student.class); ListStudent studentList util.importExcel(file.getInputStream()); String message studentService.importStudent(studentList); return success(message); } GetMapping(/export) public void export(HttpServletResponse response, Student student) { ListStudent list studentService.selectStudentList(student); ExcelUtilStudent util new ExcelUtil(Student.class); util.exportExcel(response, list, 学生数据); }5.2 数据权限控制在实体类添加注解Data TableName(stu_student) public class Student { DataScope(deptAlias d, userAlias u) private String dataScope; }修改SQL查询select idselectStudentList resultMapStudentResult SELECT s.* FROM stu_student s WHERE ${params.dataScope} /select5.3 定时统计任务创建定时任务统计学生人数Component(studentTask) public class StudentTask { Autowired private IStudentService studentService; public void statistics() { int count studentService.countStudents(); System.out.println(当前在校学生总数: count); } }在管理界面配置定时执行任务名称学生统计 调用目标studentTask.statistics Cron表达式0 0 2 * * ? # 每天凌晨2点执行