通過mybatis-plus進行數(shù)據(jù)庫字段加解密方式
更新時間:2026年01月09日 08:37:00 作者:ronshi
文章主要介紹了在Java開發(fā)中,從編寫處理程序(handler)到實現(xiàn)加解密工具(util),再到配置實體和字段,以及自定義MyBatis的mapper語句的全過程
1、編寫handler
@MappedJdbcTypes(JdbcType.VARCHAR)
public class EncryptHandler extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, String parameter, JdbcType jdbcType) throws SQLException {
preparedStatement.setString(i, EncryptFieldUtil.encrypt(parameter));
}
@Override
public String getNullableResult(ResultSet resultSet, String columnName) throws SQLException {
return EncryptFieldUtil.decrypt(resultSet.getString(columnName));
}
@Override
public String getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {
return EncryptFieldUtil.decrypt(resultSet.getString(columnIndex));
}
@Override
public String getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException {
return EncryptFieldUtil.decrypt(callableStatement.getString(columnIndex));
}
}
2、編寫加解密util
public class EncryptFieldUtil {
/**
* 數(shù)據(jù)庫字段加密key
*/
private static final byte[] KEY = "sdfdfsdfdfghhhss".getBytes(StandardCharsets.UTF_8);
/**
* 加密字段
*/
public static String encrypt(String value) {
if (StrUtil.isBlank(value)) {
return value;
}
AES aes = SecureUtil.aes(KEY);
return aes.encryptHex(value);
}
/**
* 解密字段
*/
public static String decrypt(String value) {
if (null == value) {
return null;
}
try {
return SecureUtil.aes(KEY).decryptStr(value);
} catch (CryptoException e) {
return value;
}
}
}3、實體及字段配置
@TableName(value = "表名", autoResultMap = true) @TableField(typeHandler = EncryptHandler.class)
4、自定義mapper語句
<resultMap id="TitlePO" type="com.techhf.tenant.infrastruture.po.TitlePO">
<result column="title_name" property="titleName" typeHandler="com.techhf.common.mybatis.handler.EncryptHandler"/>
</resultMap>總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Springboot微服務分布式框架Rouyi Cloud權限認證(登錄流程之token解析)
這篇文章主要介紹了Springboot微服務分布式框架Rouyi Cloud權限認證的相關知識,重點講解下整個框架的入口,登錄流程之token解析,感興趣的朋友跟隨小編一起看看吧2024-04-04
關于idea-web.xml版本過低怎么生成新的(web.xml報錯)問題
今天通過本文給大家分享idea-web.xml版本過低怎么生成新的(web.xml報錯)問題,通過更換web.xml版本解決此問題,感興趣的朋友跟隨小編一起看看吧2021-07-07
Spring Security 中的 AuthenticationManager配置及使用
本文我們將探討 AuthenticationManager 在 Spring Security 中的作用,并指導您完成其配置和實際應用,感興趣的朋友跟隨小編一起看看吧2024-11-11
Springcloud seata分布式事務實現(xiàn)代碼解析
這篇文章主要介紹了Springcloud seata分布式事務實現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-12-12
java Unicode和UTF-8之間轉(zhuǎn)換實例
這篇文章主要介紹了java Unicode和UTF-8之間轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

