通過mybatis-plus進行數(shù)據庫字段加解密方式
更新時間: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ù)據庫字段加密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>總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java工作環(huán)境的配置與Eclipse的安裝過程
這篇文章主要介紹了Java工作環(huán)境的配置與Eclipse的安裝過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
反射機制:getDeclaredField和getField的區(qū)別說明
這篇文章主要介紹了反射機制:getDeclaredField和getField的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

