MyBatis使用logback包打印SQL语句实践
目录1、引入依赖2、新建配置文件效果图修正总结完整打印出sql语句。
新建 maven 项目,使用pom.xml管理依赖。
1、引入依赖
<dependencies>
<!-- mybatis 3 的依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3. ...
Java中把一个文件夹下的所有文件复制到另一个文件夹的完整实现方案
目录一、核心实现思路二、完整可运行代码三、关键细节说明四、拓展:Java 7+ Files工具类实现(更简洁)总结在Java中把一个文件夹下的所有文件复制到另一个文件夹(支持多级目录、空文件夹、文件覆盖等场景),以下是基于Java原生API的完整实现方案(兼容Java 8+,无需额外依赖):
一、核心实现思路
校验源文件夹:确保源 ...
Java使用net.lingala.zip4j导出压缩包文件的详细步骤
目录一、先确认依赖(Maven/Gradle)二、完整实现代码三、zip4j 1.x 核心配置说明(区别于2.x)四、关键问题解决1. AES-256 加密权限问题(JDK8及以下)2. 中文文件名乱码3. 文件夹删除失败4. 压缩包覆盖问题五、使用注意以下是基于 zip4j 1.x 版本实现「加密压缩指定文件夹 + 压缩后删除原文件夹」的完整代码,兼容旧版依 ...
Spring Boot 全局异常处理策略设计之@ExceptionHandler 与 @ControllerAdvice 生效原理源码解析
目录Spring Boot 全局异常处理策略设计(三):@ExceptionHandler 与 @ControllerAdvice 生效原理源码解析1. 从一个常见疑问说起2. ExceptionHandlerExceptionResolver 是谁在干活3. ExceptionHandlerExceptionResolver 的核心职责4. @ExceptionHandler 方法是如何被扫描的4.1 初始化阶段:扫描所有异常处理方法4.2 扫描 @C ...
Springboot+Mybatis+logback打印sql脚本日志实现过程
目录控制台打印日志文件打印总结之前为了在日志文件中打印sql脚本日志试了好多种方法,麻烦的简单的都试过但是都没有效果,在无意中学到了这种简单的方式,亲测有效。
控制台打印
在application.yml配置文件添加内容
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
日志文件 ...
SpringBoot Validation不生效问题及解决方案
目录确认maven依赖查看依赖关系并处理验证:校验生效,成功总结能问出这个问题说明你已经使用了@Null、@NotEmpty等等等校验注解,但是没有生效,我也出现过这种情况,请看我修复的方式,可能你缺少了哪一步。
确认maven依赖
随便查看某个校验注解(如:@NotNull)是引入的哪个依赖:
根据IDEA的已有工具查看项目的完整依赖: ...
SpringBoot同时接收文件以及json参数实现方式
目录前端传参后端接收注意总结前端传参
let upData = new FormData();
// 将文件列表赋值给files参数
this.files.forEach(function (file) {
upData.append("files", file);
});
this.firmwareSaveDto = this.formData;
let commodityDto = JSON.stringify(this.firmwareSaveDto);
// 将json对象赋值给save ...
Spring Validation的校验顺序问题及解决过程
目录问题场景原理剖析解决方法创建五个接口修改Controller控制层代码修改实体类代码整改结果后续问题问题原因解决方案总结问题场景
测试发现对同一个接口调用多次时,返回的校验异常信息不同,经过问题追踪,入参实体类代码如下:
@Data
public class EditDevNameDto {
@NotBlank(message = "deviceSn must not null")
...
AOP在SpringBoot项目中的使用场景解读
目录添加DTO添加controller(同包不同类)控制器1控制器2AOP场景演示1. 对某package下的所有接口进行方法执行前逻辑校验新增切面,编写处理逻辑2. 对某controller类下的所有接口进行方法执行前逻辑校验新增切面,编写处理逻辑3. 对某注解修饰的所有接口进行方法执行前逻辑校验自定义注解在控制器1 test 方法前修饰自定义注解 ...
数据结构-图
概述
图是一种较为复杂的非线性结构。 为啥说其较为复杂呢?
根据前面的内容,我们知道:
线性数据结构的元素满足唯一的线性关系,每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。
树形数据结构的元素之间有着明显的层次关系。
但是,图形结构的元素之间的关系是任意的。
何为图呢? 简单来说,图就是由 ...
Java通过value获取Map中key的三种实现过程
目录简介方法描述循环法Stream方法Apache Commons Collections的BidiMap总结简介
我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值。然而,有的时候我们需要反过来获取,知道Value值,求Key值。
本文将用实例介绍三种方法,通过传入Value值,获取得到Key值。
方法描述
循 ...
Java导致内存泄漏的多种情况分析
目录1、生命周期长的集合2、未关闭的资源3、ThreadLocal 使用不当4、内部类与外部类引用5、 监听器与回调今天我们来一起聊一聊有哪些情况会导致内存泄漏。
什么是 内存泄漏 呢?
内存泄漏 是指对象 已经不再被程序使用,但因为某些原因 无法被垃圾回收器回收,长期占用内存,最终可能引发&nb ...
JAVA中对象常见的几种方法比较
目录引言基本元素比较1. 基本数据类型:直接用==比较值2. 包装类:分两种情况3. String 类型:核心看==和equals()的区别基本元素比较的核心建议总结对象的比较1. 覆写基类Object的equals()+hashCode()核心用途核心规则实现要点示例适用场景2. 基于Comparable接口的比较核心用途核心方法实现要点示例适用场景3. 基于Comparat ...
使用SpringBoot+MyBatis实现数据库字段级加密
目录为什么需要字段级加密?技术选型:为什么选择Spring Boot + MyBatis?Spring Boot的优势MyBatis的优势核心实现思路1. 加密注解设计2. 实体类标记3. 加密工具类4. MyBatis拦截器实现实际应用场景1. 用户信息保护2. 金融数据安全3. 医疗数据保护4. 企业数据安全安全性考虑总结为什么需要字段级加密?
在当今数据驱动的时 ...
通过mybatis-plus进行数据库字段加解密方式
目录1、编写handler2、编写加解密util3、实体及字段配置4、自定义mapper语句总结1、编写handler
@MappedJdbcTypes(JdbcType.VARCHAR)
public class EncryptHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, String parameter, ...
SpringBoot整合Activiti的项目中实现抄送功能
目录1、实现思路2、在Spring Boot中集成Activiti2.1、设计抄送表2.2、抄送实体类2.3、实现抄送服务3、前端集成3.1、抄送组件3.2、抄送列表页面4、高级功能扩展4.1、邮件通知集成4.2、消息推送集成(WebSocket)4.3、 抄送规则配置4.4、 应用配置文件4.5、 流程定义中的抄送配置5、总结1、实现思路
在Activiti工作 ...
JVM 堆内存分代
今天我们一起来聊一聊 JVM 堆内存。
Java Heap(堆内存)由 Young Generation(新生代,约占 1/3 )和 Old Generation(老年代,约占 2/3 )组成。
Young Generation 又由 Eden Space(伊甸园区,占新生代 80% )、Survivor Space 0(幸存者区0,占新生代 10% )和 Survivor Space 1(幸存者区 ...
SpringCloud Gateway的使用 + Nacos动态路由实践指南
目录一、简介1、什么是gateway?2、没有gateway的弊端3、gateway解决了什么?4、gateway和zuul的区别5、gateway核心概念6、gateway是如何工作的二、构建一个springcloud Gateway服务1、新建一个微服务1.1、新建gateway子模块1.2、引入依赖2、配置服务2.1、创建启动类2.2、创建application.yml配置文件2.3、启动并访问Gatewa ...
MyBatis-Plus 复杂查询Lambda+Wrapper 多条件功能实现
目录Java 数据 01:MyBatis-Plus 复杂查询(Lambda+Wrapper 多条件)一、MyBatis-Plus 简介与核心概念1.1 什么是 MyBatis-Plus?1.2 核心组件二、Lambda + Wrapper 基础入门2.1 准备工作2.2 基本查询示例三、复杂查询条件详解3.1 基础比较操作符3.2 逻辑操作符3.3 聚合函数与分组查询3.4 排序与分页四、高级特性与最佳实践4 ...
Java虚拟机(JVM)的自带工具使用详解
目录jpsjstat 的各种命令jinfojmapjhatjstack总结jps
JVM进程状态工具,用于查看进程的基本信息。JPS是Java Virtual Machine Process Status Tool的缩写,它是Java提供的一个用于查看所有Java进程的命令行工具。
jps: 默认情况下,不带任何参数运行jps将显示所有正在运行的Java进程的PID和主类名。jps -l: 使用-l选项可以显 ...