feat:增加视频压缩文档

This commit is contained in:
2026-01-29 15:01:35 +08:00
parent b39d345da9
commit cbe8821376
5 changed files with 686 additions and 7 deletions

View File

@@ -456,3 +456,66 @@ public class BlobToBase64TypeHandler extends BaseTypeHandler<String> {
}
}
```
&emsp;&emsp;例如自定义一个处理敏感字段(如密码、手机号)的自动加解密:
```java
public class EncryptTypeHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, AESUtil.encrypt(parameter)); // 自定义加密方法
}
@Override
public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
String encrypted = rs.getString(columnName);
return AESUtil.decrypt(encrypted); // 自定义解密方法
}
}
```
&emsp;&emsp;然后在实体类字段上加上 @TableField(typeHandler = EncryptTypeHandler.class)
```java
@TableName("user")
public class User {
private Long id;
private String name;
// 这个字段在数据库里存的是加密后的字符串
@TableField(typeHandler = EncryptTypeHandler.class)
private String phone; // 例如 "13800138000" → 存为 "U2FsdGVkX1+oO1W..."
@TableField(typeHandler = EncryptTypeHandler.class)
private String idCard; // 身份证号
// 普通字段,不加密
private String email;
}
```
&emsp;&emsp;如果是在XML文件中查询需要指定TypeHandler
```xml
<resultMap id="UserResultMap" type="com.example.entity.User">
<id column="id" property="id" />
<result column="name" property="name" />
<!-- 关键phone 字段使用 EncryptTypeHandler -->
<result column="phone" property="phone" typeHandler="com.example.handler.EncryptTypeHandler"/>
<!-- idCard 字段也用同一个处理器 -->
<result column="id_card" property="idCard" typeHandler="com.example.handler.EncryptTypeHandler"/>
<result column="email" property="email" />
</resultMap>
```
&emsp;&emsp;MyBatisPlus中定义了一些常用的类型处理器例如JacksonTypeHandler
```java
@TableField(value = "fault_type", typeHandler = JacksonTypeHandler.class)
```
&emsp;&emsp;在XML文件中将typeHandler设置为`com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler`
# 六、MyBatis/MyBatis Plus常见问题
1. 更新值为null的字段时会失效
&emsp;&emsp;需要更改字段的更新策略:
```java
@TableField(value = "file_name", updateStrategy = FieldStrategy.ALWAYS)
```