RuoYi 若依官方网站 |后台管理系统|权限管理系统|快速开发框架|企业管理系统|开源框架|微服务框架|前后端分离框架|开源后台系统|RuoYi|RuoYi-Vue|RuoYi-Cloud|RuoYi框架|RuoYi开源|RuoYi视频|若依视频|RuoYi开发文档|若依开发文档|Java开源框架|Java|SpringBoot|SrpingBoot2.0|SrpingCloud|Alibaba|MyBatis|Shiro|OAuth2.0|Thymeleaf|BootStrap|Vue|Element-UI||www.ruoyi.vip

此功能仅需要自己设计好数据库表,然后将自动生成Vue+SpringBoot前后端的代码。

【基于若依框架开发更推荐】

数据表设计

注意事项:

  • 命名规范:Id​​​​​​​(推荐)、ID或id(不推荐),user_id(推荐)、userId或UserId(不推荐)
  • 字段要求:若后续增删改查逻辑直接用代码生成器的逻辑实现,字段要求有:

代码生成:

导入数据库表

代码生成

 代码生成器原理(chatgpt):

若依(Ruoyi)框架是一个基于 Spring Boot 和 Vue 的快速开发平台,提供了代码生成器功能,可以根据数据库表生成前后端代码。这个功能的原理主要包括以下几个步骤:

  1. 读取数据库表结构:代码生成器通过 JDBC 读取数据库表的元数据(如表名、列名、数据类型等)。
  2. 生成代码模板:根据预定义的代码模板生成前后端代码。
  3. 渲染代码模板:将读取到的元数据填充到代码模板中,生成具体的代码文件。
  4. 输出生成的代码:将生成的代码保存到指定的目录中。

以下是若依代码生成器的工作原理和关键代码示例。

1. 读取数据库表结构

代码生成器通过 JDBC 连接到数据库,读取表的元数据。以下是一个读取表结构的示例代码:

public List<TableInfo> getTableList(String tableName) {
    List<TableInfo> tableList = new ArrayList<>();
    // 获取数据库连接
    Connection connection = dataSource.getConnection();
    // 获取元数据
    DatabaseMetaData metaData = connection.getMetaData();
    // 获取表信息
    ResultSet tables = metaData.getTables(null, null, tableName, new String[]{"TABLE"});
    while (tables.next()) {
        TableInfo tableInfo = new TableInfo();
        tableInfo.setTableName(tables.getString("TABLE_NAME"));
        tableInfo.setTableComment(tables.getString("REMARKS"));
        tableList.add(tableInfo);
    }
    tables.close();
    connection.close();
    return tableList;
}
2. 生成代码模板

代码模板通常使用模板引擎来编写,比如 FreeMarker、Velocity 等。以下是一个 FreeMarker 模板的示例,用于生成实体类代码:

<#-- 实体类模板 -->
package ${packageName}.domain;

import java.io.Serializable;
import java.util.Date;
import lombok.Data;

/**
 * ${tableComment} 实体类
 */
@Data
public class ${className} implements Serializable {

    private static final long serialVersionUID = 1L;

    <#list columns as column>
    /**
     * ${column.columnComment}
     */
    private ${column.javaType} ${column.columnName};
    </#list>
}
3. 渲染代码模板

使用模板引擎将元数据填充到模板中,生成具体的代码文件。以下是一个使用 FreeMarker 渲染模板的示例:

public void generateCode(TableInfo tableInfo) throws Exception {
    // 创建 FreeMarker 配置
    Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);
    cfg.setDirectoryForTemplateLoading(new File(templateDir));
    cfg.setDefaultEncoding("UTF-8");

    // 加载模板
    Template template = cfg.getTemplate("entity.ftl");

    // 创建数据模型
    Map<String, Object> dataModel = new HashMap<>();
    dataModel.put("packageName", packageName);
    dataModel.put("className", tableInfo.getClassName());
    dataModel.put("tableComment", tableInfo.getTableComment());
    dataModel.put("columns", tableInfo.getColumns());

    // 渲染模板
    File output = new File(outputDir + tableInfo.getClassName() + ".java");
    try (Writer out = new OutputStreamWriter(new FileOutputStream(output))) {
        template.process(dataModel, out);
    }
}
4. 输出生成的代码

将生成的代码文件保存到指定的目录中,通常会按照模块或功能进行分类存储。

代码生成器的工作流程
  1. 用户输入:用户在若依管理后台输入数据库连接信息和表名,选择需要生成代码的表。
  2. 读取表结构:代码生成器通过 JDBC 读取表结构信息,包括表名、列名、数据类型、注释等。
  3. 渲染模板:代码生成器将表结构信息填充到预定义的代码模板中,生成前后端代码。
  4. 保存代码:将生成的代码文件保存到项目的相应目录中。
代码生成器(论文待总结

个人感想:规范规范规范!代码生成器一切都是基于一定规范,像用mybatis时数据库字段名和Java Bean的属性名称要按一定规范进行,代码生成时也要基于一定规范。

Logo

快速构建 Web 应用程序

更多推荐