- 博客(934)
- 收藏
- 关注
原创 Vite+Vue3项目浏览器加载白屏(用其他浏览器又正常)
所以,Vite服务器正常,但某个浏览器的本地缓存文件损坏或读取失败。开发期最佳实践当遇到此类莫名其妙的加载失败、白屏或样式错乱时,第一个排查步骤就是尝试“无痕模式”或“换个浏览器”,这能快速帮你判断是前端问题还是后端服务问题。在Chrome开发者工具的Network(网络)面板中,勾选“Disable cache(停用缓存)”,可以避免绝大多数由缓存引发的问题,非常适合开发阶段使用。如果你已经尝试了清除浏览器缓存,项目在原来报错的浏览器里也正常了,那么问题就圆满解决了。
2026-02-08 10:07:31
76
原创 IDEA反转方法的处理(抑制反转方法警告)
SuppressWarnings("BooleanMethodIsAlwaysInverted") // 抑制反转方法警告。
2026-02-07 22:44:23
190
原创 Java中LocalDate.parse().atTime(23, 59, 59)与LocalDate.parse().atTime(LocalTime.MAX)的区别
推荐使用,因为:它真正代表了当天的最后一刻确保不会因为精度问题遗漏数据代码表达意图更清晰("当天的结束时间")兼容大多数数据库系统只有当您的数据库明确不支持微秒/纳秒精度,并且您有严格的性能考虑时,才考虑使用。在大多数业务系统中,使用是更安全、更准确的选择。
2026-02-07 18:03:09
130
原创 lombok中的@ToString.Exclude和@ToString.Include控制日志输出
/ 输出:Product(id=1, name=手机, description=xxx, createTime=2024-01-01)@ToString.Exclude // 即使标记了Include,Exclude优先级更高。@ToString.Include(rank = 1) // 最高优先级,最先显示。@ToString.Include(rank = 10) // 低优先级,最后显示。// 默认rank=0。@ToString.Include(rank = 1) // 排序优先级。
2026-02-07 10:53:26
200
原创 lombok中的@Data、@NoArgsConstructor、@AllArgsConstructor的组合使用说明
Data // 没有@NoArgsConstructor和@AllArgsConstructor。// 没有tempField参数,但JSON中有tempField时会报错。@AllArgsConstructor // Builder需要。@AllArgsConstructor // 隐式无参构造器消失。@NoArgsConstructor // 保证有无参构造器。// ❌ 现在没有无参构造器了!@AllArgsConstructor // 添加了这个。@Data // 隐式有无参构造器。
2026-02-07 10:25:06
541
原创 Spring Boot + pagehelper分页查询
如果你想要一个通用的转换方法,可以这样:java// 设置其他分页信息...// 使用方式根本原因返回的实际是一个Page对象,它实现了List接口但在你的代码中,被声明为,丢失了分页信息当你尝试转换为时,类型不匹配建议:推荐使用方案一或方案三,它们更清晰且避免了类型转换的困惑。那为什么这样的代码又是正常的你提供的这段代码是正常的,因为:java// 这行正常第二段代码正常:因为的运行时类型就是Page,向下转型安全第一段代码错误:因为list是通过。
2026-02-06 16:51:40
500
原创 Spring Boot + MyBatis-Plus分页查询
java@Service/*** 使用自定义SQL进行分页查询*/@OverridexmlWHERE 1=1= ''"></if>= null"></if></select></mapper>java@Data@Data// 可以添加额外的展示字段@Data// 构造函数@Data。
2026-02-05 23:49:01
714
原创 Vue3+TypeScript 自定义指令
json},typescript// 1. 定义指令参数类型maxLength?: number: boolean: boolean// 2. 定义指令存储的扩展类型// 3. 创建指令/*** 元素挂载时调用* @param el - 绑定的元素* @param binding - 指令绑定信息*/// 解析配置// 找到 input 元素if (!input) {
2026-02-04 23:28:18
1487
原创 Vue3中String与toString区别
更安全,适用于所有类型,包括 null/undefined:要求 value 不是 null/undefined,且必须有 toString 方法在 Vue 3 中,推荐使用String()方式,因为它更安全,能避免运行时错误,尤其是在处理可能为 null/undefined 的响应式数据时。
2026-02-04 16:27:29
752
原创 Vue3 + TypeScript + el-input 处理金额输入(只能输入数字、负号和小数点,最多两位小数,不能0开头,不能小数点开头,只能开头输入负号,只能输入一次负号和小数点)
代码:易读的JavaScript代码(直接在这里写代码)代码:易读的JavaScript代码(使用常量)代码:复杂的正则表达式代码。1、创建常量 + 统一导出。
2026-02-03 18:38:59
224
原创 Vue3 + TypeScript + el-input 处理年份输入(最多只能输入四位数字,不能输入其他符号)
【代码】Vue3 + TypeScript + el-input 处理年份输入(只能输入四位数字,不能输入其他符号)
2026-02-02 12:52:24
342
原创 Vue3 + TypeScript + el-input 处理数字输入(只能输入数字,不能输入其他符号)
【代码】Vue3 + TypeScript + el-input 处理数字输入(只能输入数字,不能输入其他符号)
2026-02-02 12:39:46
179
原创 vue3中,点击<el-form>中的<button>按钮时,触发浏览器刷新重新加载(在资金信息查改对话框中点击隐藏导航栏和关闭导航栏,都会触发浏览器刷新)
显示导航</span><span class="btn-text">上一页</span><span class="btn-text">下一页
2026-02-01 22:43:59
882
原创 全栈项目实例(资金信息):vue3+TypeScript+Element-Plus+Spring Boot+Mybatis-Plus
设置列宽(重新加载后依然有效)重置列宽(重新加载后生效)更多操作 - 下载模板。更多操作 - 导入数据。更多操作 - 导出数据。更多操作 - 打印清单。
2026-02-01 21:29:33
318
原创 Vue3+Element-Plus使用插槽方式解决按钮文本为空时按钮图标居中的问题
按钮文本为空时,按钮图标没有居中将这两处改为插槽方式插槽这是因为当按钮文本为空时,Element Plus的按钮样式会导致图标位置偏移。
2026-01-30 07:32:05
844
原创 Vue3文件上传使用@click.stop解决多次触发(事件冒泡)的问题
- 这里传递 $event -->console.log("事件目标:", event?-- 添加 @click.stop 阻止事件冒泡 -->-- ... 其他代码保持不变 ... -->-- ... 其他代码保持不变 ... -->-- 上传按钮(包含上传图标) -->-- ... 其他代码保持不变 ... -->-- 上传按钮(包含上传图标) -->-- ... 其他代码保持不变 ... -->
2026-01-29 20:41:02
670
原创 vue3中DataCloneError: Failed to execute ‘structuredClone‘ on ‘Window‘: #<Object> could not be cloned
方案优点缺点推荐度简单、无需依赖、处理大部分基本类型丢失函数、Date、undefined等⭐⭐⭐⭐功能全面、可靠、保留更多类型需要引入第三方库⭐⭐⭐⭐⭐浏览器原生、性能好需要处理Vue代理、可能仍有兼容问题⭐⭐自定义深拷贝函数完全可控、可定制实现复杂、容易出错⭐⭐根据你的错误信息和数据结构,推荐用或 JSON.parse(JSON.stringify())。
2026-01-29 16:07:58
574
原创 vue3对象复制/拷贝/克隆
方案优点缺点推荐度简单、无需依赖、处理大部分基本类型丢失函数、Date、undefined等⭐⭐⭐⭐功能全面、可靠、保留更多类型需要引入第三方库⭐⭐⭐⭐⭐浏览器原生、性能好需要处理Vue代理、可能仍有兼容问题⭐⭐自定义深拷贝函数完全可控、可定制实现复杂、容易出错⭐⭐根据你的错误信息和数据结构,推荐使用或 JSON.parse(JSON.stringify())。
2026-01-29 16:00:36
1244
原创 Vue3中Object.assign用法区别解析
特性引用关系直接引用源对象创建新对象,与源对象解耦响应式处理可能失去响应性更容易被 Vue 转换为响应式内存使用共享内存,更节省创建新对象,占用额外内存安全性修改源数据可能影响目标与源数据隔离,更安全推荐场景确定源数据是响应式对象不确定源数据的响应式状态在 Vue3 中,推荐使用,因为它更安全,能确保数据与源解耦,并且 Vue 能更好地处理响应式转换。
2026-01-29 10:38:44
485
原创 Vue3实践问题:iframe的src设置不合法,引发页面刷新
问题描述:关闭抽屉时,还额外做了很多事情代码:原因分析:打开抽屉时:pdfSrc.value = blob:http://localhost:5173/bed4bf8e-7734-468b-b14a-99e343bd7edb#toolbar=0关闭抽屉时:pdfSrc.value = #toolbar=0在 Vue3 中,如果pdfSrc的值是#toolbar=0(不完整的 URL),iframe。
2026-01-27 10:33:21
596
原创 Vue3 Pinia中store清理最佳实践 $reset 和 $dispose
不要随意使用$dispose()- 除非你真的需要销毁整个 store 且确定没有其他地方使用组件卸载时的清理javascript// 只清理当前组件的订阅// 取消订阅// 或者重置特定数据});用户切换时的清理(放在登录/登出逻辑中):javascript// 登录成功后// 清理旧数据// 或 clearUserData()// 设置新用户数据store 设计建议javascript// 区分全局数据和组件特定数据。
2026-01-21 11:11:33
607
原创 spring boot中异常日志输出:log.error(“【文件上传】失败,{},{}“, endpoint, method, e);最后的e是异常对象,会输出堆栈信息
您的写法log.error("【文件上传】失败,{},{}", endpoint, method, e);完全正确SLF4J 规则:最后一个参数如果是Throwable类型,会被自动视为异常,输出堆栈信息实际效果endpoint和method会填充到两个占位符,e会被作为异常处理日志输出:会包含完整的异常堆栈信息。
2026-01-18 15:36:49
577
原创 Spring Boot中AOP日志序列化问题解决方案
创建一个自定义的 FastJSON 配置,排除特定字段:java@Component// 为 FileData 类添加自定义序列化器@OverrideType type,@Overridereturn 0;});java// 创建过滤器@Override// 如果是 FileData 对象的 fileContent 字段,则跳过// 使用过滤器。
2026-01-17 12:58:49
588
原创 MyBatis-Plus 中 update 和 updateById 的区别
在 MyBatis-Plus 中,update和updateById。
2026-01-16 12:34:08
549
原创 MyBatis-Plus中update的用法
在MyBatis-Plus中,这两种写法没有区别,最终效果是相同的。让我详细解释一下:java// 写法1:显式传入null作为实体参数capitalInfoMapper.update(null, updateWrapper);// 写法2:只传入updateWrappercapitalInfoMapper.update(updateWrapper);实际上,第二种写法 在编译时会自动转换为第一种写法。这是因为:语法糖机制:MyBatis-Plus通过方法重载和默认参数实现了这个语法糖内部实
2026-01-16 11:56:40
320
原创 Spring Boot MyBatis-Plus处理日期范围查询代码报错分析与修复
/ 处理日期范围查询 - 单独处理以避免空列表访问。// 可以记录日志或进行其他处理。// 模糊查询 - 资金序号。// 模糊查询 - 资金名称。// 精确查询 - 资金类别。// 精确查询 - 指标类别。// 模糊查询 - 资金账户。// 精确查询 - 资金来源。// 精确查询 - 指标来源。// 精确查询 - 资金年份。// 精确查询 - 资金状态。// 模糊查询 - 备注信息。// 倒序排序 - 资金年份。// 倒序排序 - 主键id。:在处理可能返回空值的方法时,始终进行空值检查。
2026-01-14 11:50:33
568
原创 MyBatis-Plus 多字段排序详解
java// 使用 orderBySql 实现自定义排序// 使用SQL函数排序// 自定义顺序// 按名称长度排序// 按条件排序:状态为1的排前面。
2026-01-10 10:26:15
635
原创 Mybatis-Plus中QueryWrapper 与 LambdaQueryWrapper 的区别
/ 可能是 "name" 或 "username"lambdaWrapper.eq(User::getNam, "张三");lambdaWrapper.eq(User::getName, "张三");queryWrapper.eq("name", "张三");// ❌ 需要手动改为 "username"queryWrapper.eq("nam", "张三");lambdaWrapper.eq(User::getName, "张三")queryWrapper.eq("name", "张三")
2026-01-09 16:33:49
1059
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅