程序员诚哥
开源项目ruoyi-wms、ruoyi-mall、ruoyi-fast-service作者
展开
-
MySQL 索引失效及其解决办法
在数据库优化中,索引(Index)是一项至关重要的技术手段,可以显著提升查询性能。然而,在实际开发过程中,MySQL 索引并不总是如预期生效。本文将从原理出发,系统地介绍索引失效的常见场景及其解决方案,帮助开发者有效规避性能陷阱。规则描述避免对索引列进行函数/计算处理如保证数据类型一致避免隐式转换遵循最左前缀原则联合索引按顺序使用尽量使用等值匹配避免!<>NOT IN等使用EXPLAIN调试执行计划判断是否真正走索引。原创 2025-05-22 11:26:28 · 320 阅读 · 0 评论 -
JDK9~17语法新特性全览:Java语言的持续进化
从 JDK9 到 JDK17,Java 语言在保持稳定性的同时,也在不断吸收现代编程理念,引入了一系列实用的新语法特性。这些特性不仅提升了开发效率,还增强了代码的可读性和表达力。本文将带你逐一了解这段时间内最值得关注的 8 个语法亮点。原创 2025-05-21 17:10:30 · 157 阅读 · 0 评论 -
Hutool 常用工具类实战指南
Hutool 是一款轻量级、功能丰富的 Java 工具库,上手简单、功能实用。通过本文介绍的StrUtilDateUtilNumberUtilBeanUtilMapUtilSecureUtil和等常用类,我们可以极大提高开发效率,减少重复劳动。如果你在开发过程中也频繁面对字符串处理、日期转换、Bean 映射等问题,不妨尝试引入 Hutool,让你的代码更清晰、简洁、优雅!原创 2025-05-20 14:36:06 · 70 阅读 · 0 评论 -
空值运算符最佳实践清单(适用于 Vue 项目)
建议理由优先使用?替代深层&&判断更清晰、简洁展示用户数据或接口返回值时配合??提供默认值防止界面空白或崩溃表单初始值统一使用??''处理避免 uncontrolled 警告在 computed / methods 中统一处理空值逻辑保持模板整洁编写公用函数封装复杂的空值获取提升代码复用性。原创 2025-05-07 09:01:12 · 185 阅读 · 0 评论 -
ruoyi-plus Spring Boot + MyBatis 中 BaseEntity 的设计与动态查询实践
通过在BaseEntity中引入和params,我们实现了灵活的动态查询能力,在开发中极大简化了接口参数结构与查询逻辑。同时,也提升了系统的可维护性与扩展性,是开发大型后台系统中常用的技巧之一。如果你正在构建一个基于 Spring Boot + MyBatis 的后台管理系统,不妨考虑将这两个字段纳入你的BaseEntity设计中。原创 2025-05-01 23:24:04 · 839 阅读 · 0 评论 -
若依Vue + Spring Boot:前后端参数传递实践与 @RequestParam、@RequestBody、@ModelAttribute 使用详解
场景推荐方式简单参数(分页、搜索),配合params: {}使用接收 JSON 对象(新增、修改),配合data: {}使用GET 提交对象数据,字段名称保持一致POST 多对象使用封装对象或重复提交拦截Axios 请求拦截器实现通过合理使用前后端参数绑定机制和统一的 Axios 封装,我们可以在 Vue + Spring Boot 项目中实现高效、稳定、安全的接口通信。原创 2025-04-30 10:21:54 · 550 阅读 · 0 评论 -
若依ruoyi-vue前端页签缓存设置
在路由配置中,为需要缓存的路由设置。原创 2024-04-24 10:00:00 · 4849 阅读 · 0 评论 -
ruoyi-vue若依前端是如何防止接口重复请求
防止接口重复请求是为了避免用户在短时间内多次点击同一个按钮,导致后端接口被多次调用,引发数据异常或性能问题。之前的文章介绍过后端如何防止接口重复请求,这篇文章介绍一下前端如何防止接口重复提交。原创 2024-09-20 11:41:04 · 1339 阅读 · 0 评论 -
若依vue根据字典Dict的value获取Label,类似于通过key获得value
项目需求需要根据字典的value来获取label进行展示,若依提供了selectDictLabel, selectDictLabels两个方法通过value获取label。原创 2022-09-27 16:19:35 · 8023 阅读 · 1 评论 -
若依ruoyi-vue中图标使用介绍
该组件是在src\assets\icons\index.js文件中被注册为全局组件的,可以在项目任意地方使用。所有的图标都在src\assets\icons\svg目录下。可自行添加或者删除图标,所有图标都会被自动导入,无需手动操作。如果你是从 iconfont 下载的图标,记得使用如 Sketch 等工具规范一下图标的大小问题,不然可能会造成项目中的图标大小尺寸不统一的问题。本项目中使用的图标都是 128*128 大小规格的。你可以改变父级的color或者直接改变fill的颜色即可。原创 2024-04-24 08:43:53 · 1868 阅读 · 0 评论 -
以element ui为例分析前端各种弹窗和对话框的使用场景与区别
本文研究分析element ui 中的各种弹窗和对话框,包括了:Dialog 对话框,Drawer 抽屉,MessageBox 弹框,Popconfirm 气泡确认框,Message 消息提示,Notification 通知。同时说明了Dialog 对话框与Drawer 抽屉的区别、MessageBox和Dialog的区别以及Message消息提示与Notification通知的区别。原创 2023-01-18 10:45:27 · 7367 阅读 · 0 评论 -
vue判断页面是否刷新的方法1:vuex
最近项目有个需求,当页面刷新时更新vuex。看了若依vue里面的操作,在router.beforeEach方法里判断store.getters.roles长度是否为0,如果是0,则代表刷新,如果不是则代表路由跳转。原创 2022-09-21 11:55:07 · 2237 阅读 · 0 评论 -
若依如何去掉“正在加载系统资源,请耐心等待”
最近有网友反馈这个加载动画很丑,问我如何去掉:原创 2024-04-23 18:18:29 · 2286 阅读 · 0 评论 -
若依ruoyi-vue前端异常处理
文件是基于 axios 的封装,用于统一处理请求参数、请求头、错误提示信息等。这些功能的封装使得在 Ruoyi Vue 中进行 HTTP 请求时可以更加方便和统一,同时也提高了代码的可维护性和可扩展性。原创 2024-05-07 15:49:17 · 1195 阅读 · 0 评论 -
实现vue3版本uniapp hbuilder 转 vue-cli
有个开源项目是用hbuilder编译的,现在想通过vue cli实现。本文记录过程中的采坑。原创 2023-03-21 14:36:36 · 1391 阅读 · 0 评论 -
记录一次:封装el-cascader组件后默认值一旦被改变无法回显的问题
Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。但是Vue 不能检测以下数组的变动。原创 2022-10-20 17:43:25 · 837 阅读 · 0 评论 -
若依顶部导航栏Navbar一些个性化设置
代码所在位置原创 2024-04-18 15:13:21 · 1802 阅读 · 0 评论 -
若依ruoyi-vue前端组件的使用指南
自定义组件允许开发人员根据项目需求创建新的组件,以实现特定的功能或样式。在Ruoyi Vue中,可以通过Vue的component方法来创建自定义组件。// 定义一个自定义组件原创 2024-04-23 15:51:39 · 1713 阅读 · 0 评论 -
若依ruoyi-vue部署在域名的子目录下应该如何配置
本文相关视频教程:https://www.bilibili.com/video/BV1Fi4y1q74p?修改utils/request.js中的location.href。添加一行base属性。原创 2024-04-25 14:29:50 · 1685 阅读 · 0 评论 -
Module not found: Error: Can‘t resolve ‘core-js/modules/es.error.cause.js‘
在自己笔记本上运行好好的,没什么问题,在jenkins编译的电脑上就出现了Can't resolve 'core-js/modules/es.error.cause.js'我用的core-js@3.19.1版本有点老了,不再维护了。我的jenkins服务器上面的node版本比笔记本的高,高版本的node对低版本的core-js支持不行。原创 2023-01-06 16:27:37 · 3294 阅读 · 0 评论 -
ruoyi-vue前端的一些自定义插件介绍
可以查看src/plugins 文件夹index.js文件// 页签操作// 认证对象// 缓存对象// 模态框对象// 下载文件。原创 2024-04-18 17:25:32 · 1492 阅读 · 0 评论 -
若依vue ruoyi-vue ant design版本使用
若依vue默认是使用element ui的,但是现在大部分项目都用ant design,ant design的组件也比element多,所以最近有想更改成ant design。网上搜了一下,已经有现成的了。原创 2022-11-22 15:55:58 · 5936 阅读 · 0 评论 -
若依vue中关于字典的使用
当需要根据字典的value来获取label进行展示,若依提供了selectDictLabel, selectDictLabels两个方法通过value获取label。main.js里已挂载了这两个方法.原创 2024-04-12 19:32:07 · 3188 阅读 · 0 评论 -
若依vue中字典Dict插件的研究
比较关键的步骤:this.dict.init(this.$options.dicts) 将vue页面上定义的dicts数组传进去,组装数据,请求后端,获取对应字典数据。原创 2022-09-09 16:40:19 · 9350 阅读 · 1 评论 -
若依vue中的静态路由和动态路由
在使用若依Vue(Ruoyi Vue)时,了解静态路由和动态路由的概念和用法是至关重要的。本文将介绍这两种路由的基本概念、特点以及它们在若依Vue中的应用。静态路由适用于路由规则不经常变化的场景,如主要菜单导航等。动态路由适用于需要根据用户权限或其他条件动态生成路由规则的场景,如权限管理系统。原创 2024-04-23 14:28:51 · 6246 阅读 · 0 评论 -
定制底部footer bug:切换tab时position fixed会抖动
当元素祖先的 transform、perspective、filter 或 backdrop-filter 属性非 none 时,容器由视口改为该祖先。fixed的元素的父级元素有任意一个的 transform、perspective、filter 或 backdrop-filter不为空,则会基于这个容器而定位,而不是浏览器窗口了。element-admin在切换tab的时候,会有一个动画效果,是基于transform来实现的。原创 2023-05-27 23:05:45 · 1241 阅读 · 0 评论 -
在若依ruoyi-vue中集成watermark实现页面添加水印
本文将介绍如何在若依Ruoyi-Vue中集成Watermark实现页面添加水印,以保护页面内容版权并增强页面视觉效果。原创 2024-04-25 14:28:57 · 2228 阅读 · 0 评论 -
如何自学springboot+vue做一个小项目?然后参与开源项目!
如何自学springboot+vue做一个小项目?然后参与开源项目!最近在和几位小伙伴做基于springboot+vue开源商城和库存管理系统,今天分享一下我们自学前后端开发然后参与开源的一些经验。希望大家都能通过编程来编写美好前程。不建议买一本书去学,书本的文字描述无法做到直观的表达,还是视频更容易接受一点。B站上有很多视频,从入门到项目实践,全部都有,找播放量和点赞量大的。一般视频底部的评论区还会有一条置顶的评论,关于前端或者后端学习的路线图,这个非常重要,可以按照这个来学,但是这里面的东西对于做一个前原创 2023-07-30 11:31:29 · 1033 阅读 · 0 评论 -
使用queryWrapper查询语句报:Cannot invoke “Object.hashCode()“ because “key“ is null
在使用QueryWrapper查询语句时报错:“Cannot invoke “Object.hashCode()” because “key” is null”据说,这个问题出现在JDK 17与MyBatis-Plus 3.3.x时会出现。遇到一个奇怪的问题,使用Spring Boot和MyBatis-Plus。我们使用的是MyBatis-Plus的3.3.2版本和JDK 19。将MyBatis-Plus升级到3.5.1版本后,问题得到了解决。原创 2024-03-28 13:20:24 · 1366 阅读 · 0 评论 -
小项目建议用redis替换mq
简单任务分发:如后台任务处理、日志收集等。实时数据处理:如实时流数据处理、监控报警、实时推送等。广播消息:如系统通知、状态更新等。轻量级系统:对运维要求较高,系统对消息丢失不敏感,且对路由和持久化无严格要求。原创 2024-09-11 10:49:53 · 943 阅读 · 0 评论 -
在若依Ruoyi-Vue中集成mybatisplus实现mybatis增强
MyBatisPlus是基于MyBatis的一款优秀持久层框架增强工具,它在MyBatis的基础上提供了丰富而强大的CRUD操作、条件构造器、全局通用操作、代码生成器等特性,极大地简化了开发过程,提升了开发效率。MyBatisPlus通过无侵入式的设计理念,使得在享受其带来的便利同时,无需对现有MyBatis项目进行大规模改造。原创 2024-04-25 14:28:08 · 4787 阅读 · 3 评论 -
在若依Ruoyi-Vue中集成Knife4j实现Swagger文档增强
Knife4j,原名Springfox-Swagger-UI,是为Swagger接口文档提供增强UI展示效果的工具,它在原生Swagger-UI基础上进行了大量功能扩展与优化。Knife4j凭借其友好的界面、丰富的交互功能、强大的个性化定制能力,成为众多开发者首选的API文档管理工具。集成Knife4j后,即可在若依-Ruoyi-Vue项目中体验到Swagger文档的诸多增强特性,提升API文档的实用性和易用性。和swagger一样,使用或注解启用Swagger,并通过Docket。原创 2024-04-25 14:26:37 · 4218 阅读 · 1 评论 -
若依ruoyi-vue实现excel导入导出
有时候我们希望导出表格包含标题信息,我们可以这样做。有时候我们希望数据展现为一个特殊的格式,或者需要对数据进行其它处理。Excel注解提供了自定义数据处理器以满足各种业务场景。1、在实体类用Excel注解handler属性指定自定义的数据处理器@Excel(name = "用户名称",handler = MyDataHandler.class)2、编写数据处理器MyDataHandler继承ExcelHandlerAdapter,返回值为处理后的值。@Override。原创 2024-03-25 19:51:18 · 10666 阅读 · 3 评论 -
规避mybaties全表更新风险
MyBatis Plus 提供了 BlockAttackInnerInterceptor (阻断攻击Sql解析器) 插件,该插件可以阻止全表更新和删除操作。在一定程度上,保证了数据库数据的安全。标签中做了if判断,id如果为null,if语句自动去掉,相当于使用了不带条件的更新语句。版本要求:MyBatis Plus 3.4.0 版本以上。标签中使用了不带条件的更新语句。原创 2024-03-22 09:00:49 · 361 阅读 · 2 评论 -
若依ruoyi-vue中的文件上传和下载
前端main.js已经引入了FileUpload组件,所以在其他页面直接使用就行。在自动生成的代码里面没有文件下载,是通过若依自己集成的download插件来实现的。若依现成的功能里面没有文件上传,但是集成了文件上传的组件以及图片上传的组件。若依自带的代码相对简单,利用FileUploadUtils将文件上传到本地。在代码自动生成的时候可以对字段设置为文件上传或图片上传图片类型。文件上传会调用服务器的/common/upload接口上传文件。后端实现相对简单,也是通过FileUtils类来实现的。原创 2024-03-20 17:26:00 · 11556 阅读 · 0 评论 -
若依ruoyi-vue中的参数验证
创建注解:首先创建一个注解类,用于标记需要进行校验的字段或方法。注解类通常使用@Target和@Retention注解指定其作用目标和生命周期。创建校验器:创建一个校验器类,实现ConstraintValidator接口,并在该类中编写校验逻辑。校验器类通常需要指定两个泛型参数,第一个参数是自定义注解的类型,第二个参数是要校验的字段或方法的类型。应用校验器:在需要校验的字段或方法上使用自定义注解,并指定校验器类。处理校验结果。原创 2024-03-19 17:47:04 · 1117 阅读 · 0 评论 -
若依ruoyi-vue中的的DTO、VO、BO、PO、DO、POJO
POJO的定义是无规则简单的对象,在日常的代码分层中pojo会被分为VO、BO、 PO、 DTO。原创 2024-03-18 17:21:09 · 1477 阅读 · 0 评论 -
若依logback日志配置采坑
推荐改成ThresholdFilter,ThresholdFilter也是基于日志事件的日志级别进行过滤的,但它只允许你指定一个阈值级别。只有达到或超过这个阈值级别的日志事件才会被允许通过过滤器。例如,如果你将阈值级别设置为WARN,那么只有WARN、ERROR和FATAL级别的日志事件才会被允许通过。若依使用的appender过滤器是level,如下述代码,这种过滤器只能导出级别为INFO的日志,warn和error都导出不出来。原创 2024-02-23 14:02:57 · 2968 阅读 · 0 评论 -
若依如何修改超级管理员登录密码
数据库找到sys_user表,复制System.out.println(result)打印出来的值,将admin的password改掉。进行密码加密是Spring Security推荐的安全做法,可以保证密码在存储和验证过程中的安全性。方法来修改超级管理员的密码。1.随便在哪个地方写个main 方法。通过以上步骤,你可以使用。原创 2023-05-30 18:35:39 · 10667 阅读 · 0 评论 -
若依源码解析:代码生成ruoyi-generator
若依的代码生成器模块(ruoyi-generator)可以根据数据库表的设计信息和配置的模板,自动生成相应的Java代码文件。代码生成器使用Velocity作为模板引擎,根据模板文件中的占位符和变量替换规则,将元数据信息嵌入到生成的代码中,生成具体的代码文件。通过导入表结构和生成代码两个后端接口,实现了快速导入数据库表结构和生成代码的功能。原创 2023-05-29 09:49:25 · 11227 阅读 · 0 评论