美文网首页
mybatis的使用BaseTypeHandler实现参数重写(

mybatis的使用BaseTypeHandler实现参数重写(

作者: 小胖学编程 | 来源:发表于2023-06-25 17:28 被阅读0次

配置方式:

@Slf4j
public class SensitiveHandler extends BaseTypeHandler<String> {
@Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType)
            throws SQLException {
        // 加密
        preparedStatement.setString(i, encrypt(s));
    }

    @Override
    public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
        return tryDecrypt(resultSet.getString(s));
    }

    @Override
    public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
        return tryDecrypt(resultSet.getString(i));
    }

    @Override
    public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        return tryDecrypt(callableStatement.getString(i));
    }
    //加密
    private String encrypt(String data) {
    }
    //解密:解密失败后,返回data
   private String tryDecrypt(String data) {
   }
}

使用方式:

@Data
@EqualsAndHashCode(callSuper = false)
@Builder
@TableName("t_test", autoResultMap = true)
public class Test extends Model<Test> {
    /**
     * 自增id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 地址
     */
    @TableField(typeHandler = KeyCenterHandler.class)
    private String address;
}

注意事项:mybatisPlus如果使用wrapper来更新字段时,那么不会生效。更新保存与查询必须以对象为维度。

相关文章

网友评论

      本文标题:mybatis的使用BaseTypeHandler实现参数重写(

      本文链接:https://www.haomeiwen.com/subject/djniydtx.html