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

2023-06-25  本文已影响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来更新字段时,那么不会生效。更新保存与查询必须以对象为维度。

上一篇下一篇

猜你喜欢

热点阅读