若依框架的架构

介绍

若依框架(RuoYi)是一款基于Spring Boot和Vue.js的权限管理系统,它提供了一套简单易用的开发框架和模块化的设计。若依框架以其高效、灵活和可扩展的特性,受到了广大开发者的喜爱和使用。本文将介绍若依框架的架构和核心模块,并提供相应的代码示例。

架构概述

若依框架的整体架构如下所示:

erDiagram
    User ||--o Role : has
    Role ||--o Menu : has
    Menu ||--o RoleMenu : belongs
    User ||--o UserRole : belongs

上述关系图展示了若依框架中主要的实体之间的关系。用户(User)可以拥有多个角色(Role),而角色可以对应多个菜单(Menu)。菜单和角色之间的关系由关联表(RoleMenu)维护。用户和角色之间的关系同样由关联表(UserRole)维护。

核心模块

系统管理模块

系统管理模块是若依框架的核心模块之一,提供了用户管理、角色管理、菜单管理、部门管理等功能。以下是用户管理功能的示例代码:

// 用户管理控制器
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
    
    @Autowired
    private ISysUserService userService;

    @GetMapping("/list")
    public TableDataInfo list(SysUser user) {
        startPage();
        List<SysUser> userList = userService.selectUserList(user);
        return getDataTable(userList);
    }

    @PostMapping
    public AjaxResult add(@RequestBody SysUser user) {
        if (userService.checkUserNameUnique(user.getUserName())) {
            return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
        }
        return toAjax(userService.insertUser(user));
    }

    // 其他接口方法...
}

上述代码中,SysUserController是用户管理的控制器,通过@RequestMapping注解指定了请求路径。@GetMapping注解用于处理GET请求,@PostMapping注解用于处理POST请求。list方法实现了用户列表的查询功能,add方法实现了用户的新增功能。

代码生成模块

代码生成模块是若依框架的另一个核心模块,它可以根据数据库表结构自动生成对应的Java代码。以下是代码生成模块的示例代码:

// 代码生成器
public class GenUtils {
    
    public static void main(String[] args) {
        // 配置数据源
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/ruoyi?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8");
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("123456");

        // 配置生成策略
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setInclude("sys_user", "sys_role", "sys_menu");
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);

        // 配置包名
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.ruoyi");
        packageConfig.setModuleName("system");

        // 配置模板引擎
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setEntity("templates/entity.java.vm");
        templateConfig.setMapper("templates/mapper.java.vm");
        templateConfig.setXml("templates/mapper.xml.vm");

        // 代码生成器
        AutoGenerator generator = new AutoGenerator();
        generator.setDataSource(dataSourceConfig);
        generator.setStrategy(strategyConfig);
        generator.setPackageInfo(packageConfig);
        generator.setTemplate(templateConfig);

        // 执行代码生成
        generator.execute();
    }
}

上述代码中,GenUtils是代码生成器的主类,通过配置数据源、生成策略、包名和模板引擎等参数,可以生成对应的Java代码。通过generator.execute()方法执行代码生成。

总结