黑马|最新AI+若依 |初识项目
本章主要内容是:
1.快速搭建了若依前后端项目在本地
2.实现了单表的增删改查快速生成
文章目录
- 介绍
- 1.若依介绍
- 2.若依的不同版本
- 3.项目运行环境
- 初始化前后端项目
- 1.下载若依项目
- 2.初始化后端
- a.把表导入到数据库中
- b.更改application.yml文件
- 3.初始化前端
- a.安装依赖
- b.改后端请求地址
- c.启动应用
- 利用若依快速生成代码
- 1.导入基础表到数据库
- 2.数据表单设置
- a. 选定新建的表
- b.修改生成配置
- c .下载生成的代码到本地
- d.将文件放到前后端项目中
- e.单表增删改查完成
- 结束语
介绍
若依是一个快速开发平台,支持后台管理系统开发,包括登录权限控制和日志记录等功能,极大简化了开发流程。它具有强大的代码生成器,可根据数据表结构自动生成前后端代码,提高开发效率和代码一致性。此外,若依还支持AI辅助编程,帮助开发者面对复杂业务需求时实现高效开发。课程内容分为基础应用、项目实战和原理三部分,涵盖了若依框架、AI工具使用、数据库、前后端技术和VUE3等技能。若依框架提供多个版本,以适应不同开发场景和技术要求,其中包括针对iOS和Android平台的uni APP版本以及基于Spring Boot和Spring Cloud的微服务架构版本。课程着重讲解了若依APP版本及其采用的前后端分离架构,指导学生通过克隆项目仓库、安装依赖和运行开发环境等步骤搭建项目,并使用若依的代码生成器自动化生成代码。此外,还介绍了项目自动更新和部署的方法,以及前端功能测试的重要性,确保项目顺利运行。
1.若依介绍
若依内置了丰富的通用模块,涵盖了后台管理系统,常见的系统登录权限控制、日志记录等等。我们把代码克隆下来,直接运行就可以访问了。若依自带的通用模块功能,找到若依的关键界面登录功能,若依帮我们写好了,直接使用登录一下。这些就是录音自带的权限控制相关,还有日志记录相关的等等功能。这些模块集成进一步简化了我们的开发流程,让我们可以专注于业务能力的实现。若依还有一个更强大的功能生成器,在实际的开发中,我们经常会遇到需要编写大量重复代码的情况。登山改造操作。但这工具在这里发挥了巨大的作用。我们只需要定义好数据表的结构,如果一定能自动为我们生成前后端的代码,下面我们来感受一下这个就是我们后期单片片要完成的项目,找到若依的代码生成工具,我们只需要将这些业务表的结构交给如意进行管理。就可以生成前后端代码了。点开来看一下,这些是后端代码,这些是前端代码,咱们将这些代码复制下来,导入到开发环境当中,就可以生成这些功能的前后端代码了。包括增删改查功能,注意是前后端代码,有了代码升级的功能,谁谁谁谁什么满满的工作量。同时也提高了代码的一致性和可维护性。我们可以看到后台系统的通用功能模块和基础代码生成。如果一也能实现,将来我们可以把通用功能和技术代码交给若依来完成。
2.若依的不同版本
1.我们先来看第一个版本是前后端很合开发版本,后端采用了spring boot, 前端则选择bootstrap, 是早期web开发的常见模式。由于前端与后端代码为同一个项目当中,目前已经被市场淘汰了,我们了解一下即可。
2.第二个vue是前后端分离版本,后端同样的应用spring boot前端则改为vue,使得企业后端可以并行开发和独立部署。这是目前广泛采用的主流开发模式,这种模式对于单体项目来说非常合适,能够满足大多数的开发需求。
3.但是面对中大型的单架构,可能就会遇到的瓶颈或扩展性的问题等等。此时我们就要选第三个,若依cloud微服务版本后端升级为spring cloud阿里巴巴微服务的架构设计,确保系统延伸性和稳定性。
4.如果你还想让后台管理系统继续去适配移动端访问的话,可以选择ray APP这个版本。这个版本利用了uni APP加vivo框架强大的功能,实现了一次编写多端运行的开发模式。这意味着可以用套套代码来适配苹果的IOS安卓以及各种小程序和H5页面,极大的提高了开发效率,并降低了跨平台维护的复杂性。这里需要强调一下,如果你APP这个版本并没有去提供后端代码,我们可以结合真实的业务需求适配单体的。
3.项目运行环境
下面介绍一下运行此版本所需要的软件环境。第一个我们需要安装java的第二个安装关系数据库mysql,第三个安装非关键数据库redis,第四个安装项目构建工具maven。当然你不用这么高的也没有关系比如jdk用 1.8 ,MySQL用 5.7

初始化前后端项目
1.下载若依项目
后端地址: https://gitee.com/y_project/RuoYi-Vue
前端地址: git clone https://github.com/wzs28150/RuoYi-Vue3.git
2.初始化后端
a.把表导入到数据库中
打开数据库操作软件然后创建名字为ry-vue的库,然后运行SQL脚本,选中数据库sql文件,位置在项目同级的sql文件夹下面一共两个

b.更改application.yml文件
- 更改数据库连接密码,变成你本地数据库的连接密码。如果你redis设置密码了的话也需要更改application-druid.yml文件中的password属性。还有就是需要更改log日志的本地位置,在logback.xml文件中的log.path属性,文件需要在本地存在,要不然会报错
- 以上文件都是在ruoyi-admin项目中更改的。
3.初始化前端
a.安装依赖
-
打开项目到 VScode 中然后执行 npm install 或者yarn -V 或者 npm i下载项目前端需要的依赖
遇到的问题:因为之前别的项目下载过其他版本的依赖,会导致版本冲突,这个时候需要你根据若依这个项目的依赖去下载。
就是到 package.json 中去看哪一个依赖和你本地的版本不一样,然后下载指定版本的依赖。
b.改后端请求地址
- 更改 vite.config.js 文件中的后台请求地址 ,34行
'/dev-api': {target: 'http://localhost:8080',// target: 'https://api.wzs.pub/mock/13',changeOrigin: true,rewrite: (p) => p.replace(/^\/dev-api/, '')
}
c.启动应用
npm run dev 启动应用,访问 http://localhost:80 就可以看到页面啦
利用若依快速生成代码
1.导入基础表到数据库
a.表结构导入数据库. /Users/zhao/Downloads/阿里云盘/2024-Java若依框架专题课/01-基础篇/资料/02-入门案例
DROP TABLE IF EXISTS `tb_course`;CREATE TABLE `tb_course` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '课程id',`code` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '课程编码',`subject` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '课程学科',`name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '课程名称',`price` int DEFAULT NULL COMMENT '价格(元)',`applicable_person` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '适用人群',`info` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '课程介绍',`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin COMMENT='课程管理';LOCK TABLES `tb_course` WRITE;INSERT INTO `tb_course` VALUES (1,'cp123456','javaEE','JavaSE基础',199,'小白学员','JavaSE基础','2024-04-20 09:57:35','2024-04-20 09:57:35'),(2,'cp123457','javaEE','JavaWeb',188,'初级开发者','JavaWeb','2024-04-20 09:57:35','2024-04-20 09:57:35'),(3,'cp123458','Python+大数据','Python入门',555,'小白学员','Python入门','2024-04-20 09:57:35','2024-04-20 09:57:35'),(4,'cp123459','Python+大数据','PythonWeb',88,'初级开发者','PythonWeb','2024-04-20 09:57:35','2024-04-20 09:57:35'),(5,'cp123460','鸿蒙应用开发','鸿蒙入门',99,'小白学员','鸿蒙入门','2024-04-20 09:57:35','2024-04-20 09:57:35'),(6,'cp123461','鸿蒙应用开发','鸿蒙商城实战',59,'初级开发者','鸿蒙商城实战','2024-04-20 09:57:35','2024-04-20 09:57:35');UNLOCK TABLES;
2.数据表单设置
a. 选定新建的表
在页面菜单栏中点击 系统工具 - -> 表单构建 - -> 代码生成 --> 导入–>查询表明点击确认
b.修改生成配置
- 上一步骤选择确定后会列表会生成一条数据,点击编辑进入修改生成配置页面
- 有三个字页面。1.基本信息 2.字段信息 3.生成信息 如下图设置
c .下载生成的代码到本地
d.将文件放到前后端项目中
-
执行下载文件中的sql文件,里面是给新页面加权限的sql
-
执行下载文件的sql,前端代码复制,api和view文件到项目中。后端代码复制 course 到 src/main/java/com/ruoyi 文件夹下(ruoyi-admin子项目) 重启后端。
e.单表增删改查完成
结束语
以前一直想学习若依,自己也运行过项目,但是没人教还是摸索不透。毕竟自学能力还是有限的。这回黑马出教程啦。单表的增删改查不到5分钟就完事还是前后端分离的,这也太爽啦吧。之前去零跑汽车外包干过几天,他们那面就是用的若依这套东西。实在太好用了,学会了分分钟做出个系统。这个笔记是前3节的后面会一直学持续更新。有问题可以一起讨论,我组建了一个微信群大家可以加一下,还有这个项目的网盘资料我也可以分享 。私聊
相关文章:

黑马|最新AI+若依 |初识项目
本章主要内容是: 1.快速搭建了若依前后端项目在本地 2.实现了单表的增删改查快速生成 文章目录 介绍1.若依介绍2.若依的不同版本3.项目运行环境 初始化前后端项目1.下载若依项目2.初始化后端a.把表导入到数据库中b.更改application.yml文件 3.初始化前端a.安装依赖…...

ArrayList综合案例-模拟外卖中的商家系统
一案例要求: 二代码要求: package 重修;import java.util.ArrayList; import java.util.Random; import java.util.Scanner;import static java.lang.System.exit;public class first {public static void main(String[] args) {Scanner scnew Scanne…...

Postgres JSON字段怎么修改key的名称
场景 当你不小心将 key 的名称写错了(人员类别:多了一个冒号),或者想把引文改为中文(type改为类型) 大致思路是添加一个新的 key,然后将旧的 key 删除 sql语句 假如 JSON 列为 extra&#x…...

GStreamer学习5----probe数据探测
参考资料: gstreamer中如何使用probe(探针)获取帧数据_gstreamer 视频编码时获取视频关键帧信息-CSDN博客 Gstreamer中可以使用AppSink作为一个分支来查看管线中的数据,还可以使用probe去处理。 在GStreamer中,probe…...

Open3D 点云的圆柱形邻域搜索
目录 一、概述 1.1原理 1.2应用 二、代码实现 2.1完整代码 2.2程序说明 三、实现效果 3.1原始点云 3.2搜索后点云 一、概述 1.1原理 圆柱邻域搜索的基本思想是确定点云中的哪些点位于给定圆柱的内部。一个圆柱可以由以下几个参数定义: 中心点:…...

python如何设计窗口
PyQt是一个基于Qt的接口包,可以直接拖拽控件设计UI界面,下面我简单介绍一下这个包的安装和使用,感兴趣的朋友可以自己尝试一下: 1、首先,安装PyQt模块,这个直接在cmd窗口输入命令“pip install pyqt5”就行…...

C语言获取当前时间
一共有两段代码,一个是获取当前时间,一个是获取到现在的总毫秒数 求关注😄 互粉必回 获取当前时间 #include <stdio.h> #include <time.h> int main() { time_t rawtime; struct tm * timeinfo; char buffer[20]; // 获取当前…...

【每日一练】python三目运算符的用法
""" 三目运算符与基础运算的对比 """ a 1 b 2#1.基础if运算判断写法: if a > b:print("基础判断输出:a大于b") else:print("基础判断输出: a不大于b")#2.三目运算法判断:…...

CentOS 7.9 停止维护(2024-6-30)后可用在线yum源 —— 筑梦之路
众所周知,centos 7 在2024年6月30日,生命周期结束,官方不再进行支持维护,而很多环境一时之间无法完全更新替换操作系统,因此对于yum源还是需要的,特别是对于互联网环境来说,在线yum源使用方便很…...

Git 常用命令备忘
1、删除 (1)、git push origin --delete dev 删除远程分支 (2)、git branch -d dev 删除本地分支 git branch -D dev 强制删除本地分支 2、创建分支 (1)、git checkout -b dev 创建本地分支 (2)、git push origin dev 创建远程分支,此时本地分支与远程…...

Ubuntu24.04安装Skynet环境
安装依赖 sudo apt-get -y install gcc sudo apt-get -y install g sudo apt-get -y install make sudo apt-get install -y autoconf automake libtool sudo apt-get install -y git 或者可以用: sudo apt-get -y install gcc g make autoconf automake libtool…...

【C++】cout.self()函数
📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文作为 JohnKi 学习笔记,借鉴了部分大佬案例 📢未来很长&#…...

VueQuill 富文本编辑器技术文档快速上手
VueQuill 富文本编辑器技术文档 1. 安装 VueQuill2. 配置 VueQuill3. 在组件中使用 VueQuill4. 配置选项5. 事件处理6. 数据格式7. 自定义工具栏8. 示例项目结构9. 常见问题如何添加图片上传功能?如何自定义编辑器主题? 在此之前,我讲解过关于…...

链式二叉树oj题
1.输入k ,找第k层节点个数 int TreeKlevel(BTNode*root,int k) {if (root NULL) {return 0;}if (k 1) {return 1;}return TreeKlevel(root->left, k - 1)TreeKlevel(root->right, k - 1); } 在这里我们要确定递归子问题,第一个就是NULL时返回&…...

Curator 是一个开源工具为 Elasticsearch 集群设计,用于自动化索引的维护任务。
Elasticsearch 使用 Curator 进行索引生命周期管理是一种常见的做法,Curator 是一个开源的 Python 工具,专为 Elasticsearch 集群设计,用于自动化索引的维护任务。以下是使用 Curator 进行索引生命周期管理的一些关键步骤和概念: …...

STM32-PWR和WDG看门狗
本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. PWR1.1 PWR简介1.2 电源框图1.3 上电复位和掉电复位1.4 可编程电压监测器1.5 低功耗模式1.6 模式选择1.7 睡眠模式1.8 停止模式1.9 待机模式1.10 库函数 2. WDG看门狗2.1 WDG简介2.2 IWDG框图2.3 IWDG键寄存器2.4 …...

C++循环队列 经典示例
循环队列(Circular Queue),又称环形缓冲区,是一种常用的数据结构,特别适用于资源有限的场合,比如操作系统中的任务调度、网络数据缓冲等。循环队列在数组的基础上实现,逻辑上首尾相连࿰…...

【程序大侠传】大表分库分表切换数据库类型导致pagehelper生成sql语法报错
前序 代码剑宗等级分明,其门下弟子等级划分如下: 入门弟子 刚刚拜入代码剑宗,学习基础编程语言和基本剑法(语法和基础概念)。他们的代码还显得生涩,但已经开始展现出对优雅代码的追求。 江湖小虾 初步掌握…...

7、Redis 队列与 Stream
引言 Redis 自 5.0 版本起引入了一种新的数据结构——Stream。这种数据结构不仅增加了 Redis 的数据处理能力,还使其在消息队列和数据流处理方面更具竞争力。Stream 提供了持久化、多播、消费组等功能,可以满足多种复杂的数据处理需求。 1. Redis Stre…...

FFT剖析
快速傅里叶变换 (fast Fourier transform) xn{x0,x1,…xn-1} (num:N) 旋转因子系数: d2pik/N 旋转因子 wk(n)(cos(dn)isin(dn)) n[0,N-1] y(k) sum(x(n)wk(n),0,N-1) y(k){y(0),y(1),…y(N-1)} 傅里叶级数 x(n)wk(n)的级数是: 1.d2pik/N 这个系数决…...

git clone报错RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly
问题描述 git clone github上的项目报错: RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly: CANCEL (err 8) 4796 bytes of body are still expected fetch-pack: unexpected disconnect while reading sideband packet early EOF fetch-pack: invalid index-pac…...

Apispec,一个用于生成 OpenAPI(Swagger)规范的 Python 库
目录 01什么是 Apispec? 为什么选择 Apispec? 安装与配置 02Apispec 的基本用法 生成简单的 API 文档 1、创建 Apispec 实例 2、定义 API 路由和视图 3、添加路径到 Apispec 集成 Flask 和 Apispec 1、安装…...

SpringBoot 自定义异常返回数据格式
Spring Boot 默认异常处理 当我们用 spring boot 开发接口是,当遇到异常时返回的数据格式是如下形式的 {"timestamp": "2024-07-06T02:48:55.79100:00","status": 404,"error": "Not Found","path":…...

【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!!
视频演示 【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!! 1,安装docker方法: #!/bin/shdistribution$(…...

【Unity 3D角色移动】
【Unity 3D角色移动】 在Unity 3D中实现角色移动通常涉及到几个关键步骤,包括设置角色的物理属性、处理输入、更新角色的位置以及动画同步。下面是实现基本3D角色移动的步骤和示例代码: 步骤1:设置角色的物理属性 角色通常使用Character Co…...

个人视角,社会影响力:自媒体的魅力所在
随着数字化时代的到来,自媒体正成为信息传播领域的一场革命。个人视角与社会影响力的结合,赋予了自媒体独特的魅力。在传统媒体受限制的同时,自媒体为每个人提供了表达自己观点和思想的自由。个体的真实视角使得自媒体在信息传播中发挥着重要…...

算法训练营day70
题目1:108. 冗余连接 (kamacoder.com) #include<iostream> #include<vector>using namespace std;int n; vector<int> father(10001, 0);void init() {for(int i 1;i < n;i) father[i] i; }int find(int u) {return u father[u] ? u : fa…...

EtherCAT转Profinet网关配置说明第二讲:上位机软件配置
EtherCAT协议转Profinet协议网关模块(XD-ECPNS20),不仅可以实现数据之间的通信,还可以实现不同系统之间的数据共享。EtherCAT协议转Profinet协议网关模块(XD-ECPNS20)具有高速传输的特点,因此通…...

日志自动分析-Web---360星图GoaccessALBAnolog
目录 1、Web-360星图(IIS/Apache/Nginx) 2、Web-GoAccess (任何自定义日志格式字符串) 源码及使用手册 安装goaccess 使用 输出 3-Web-自写脚本(任何自定义日志格式字符串) 4、Web-机器语言analog(任何自定义日…...

【面试八股文】java基础知识
引言 本文是java面试时的一些常见知识点总结归纳和一些拓展,笔者在学习这些内容时,特地整理记录下来,以供大家学习共勉。 一、数据类型 1.1 为什么要设计封装类,Integer和int区别是什么? 使用封装类的目的 对象化:…...