mybatis plus 数据的加密解密
时间: 2023-10-07 15:05:58 浏览: 109
Mybatis Plus并没有提供官方的数据加密解密功能。然而,你可以通过自定义类型处理器(TypeHandler)来实现数据的加密和解密。在你的实体类中,通过使用`@TableField(typeHandler = YourEncryptHandler.class)`来指定加密解密的类型处理器。你需要编写自己的类型处理器类,实现加密和解密的逻辑。在你的类型处理器类中,你可以使用自己选择的加密算法来对数据进行加密和解密操作。
相关问题
mybatis plus数据库加密解密的
mybatis plus提供了字段加密与解密的功能。根据提供的测试结果,可以看出在不同的操作实现方式下,对于非加密字段的出参解密是成功的,而对于加密字段的入参加密成功的操作有选择性。具体来说,使用原生SQL时,对于加密字段的入参加密是成功的,而使用QueryWrapper、UpdateWrapper、LambdaUpdateWrapper和updateById时,对于加密字段的入参加密是失败的。此外,在使用Insert操作时,对于加密字段的入参加密是成功的。
mybatis plus 字段加密,查询时解密
Mybatis Plus 提供了对字段加密的功能,通常通过第三方库如 Shiro 或 EasyCrypt 进行数据加密。当需要对数据库中的敏感信息(如密码、手机号等)进行存储时,可以配置 Mybatis Plus 在插入和更新时自动加密,在查询时则自动解密,使得数据在传输过程中保持安全。
具体操作步骤如下:
1. **添加依赖**:首先需要在项目中引入相应的加密库,例如 Spring Security 的 Shiro 或 EasyCrypto。
2. **配置加密规则**:在全局配置文件(如 GlobalConfig.java 或 application.yml)中,设置加密器(Encryptor)的实现,并配置默认的加密策略,例如密钥、算法等。
```java
// GlobalConfig.java
@Configuration
public class GlobalConfig extends BaseGlobalConfig {
@Override
public void configEncrypt(MybatisPlusProperties properties) {
properties.getDatabase().setEncrypt(true);
properties.getDatabase().getEncrypt().setColumnEncryptType(ColumnEncryptType.SM4);
// 如果使用 Shiro,则注入 Shiro 的 Encryptor 实现
properties.getDatabase().getEncrypt().setEncryptAlgorithm("AES");
properties.getDatabase().getEncrypt().setEncryptColumn("password"); // 需要加密的字段名
}
}
```
3. **数据操作**:当你执行 CRUD 操作(增删改查)时,Mybatis Plus 会在插入和更新操作时自动调用加密器对指定字段加密,而在查询时会自动调用解密器进行还原。
4. **查询时解密**:在 SQL 查询语句中,Mybatis Plus 会根据配置自动生成解密表达式,所以在获取到结果集后,不需要额外处理,数据已经是解密后的原始值。
如果你需要手动进行解密,可以在服务层代码中处理查询结果,例如:
```java
List<User> users = userMapper.selectBySomeCondition();
for (User user : users) {
String decryptedPassword = decrypt(user.getPassword()); // 使用自定义的解密函数
user.setPassword(decryptedPassword); // 更新解密后的密码
}
```
阅读全文