有时候为了满足公司需求,需要对数据进行入库时加密。实现自动加解密之后代码逻辑还是和以前一样。
实现原理:利用Jpa的自定义数据类型转换,只不过我们这里是String转String,即从明文转密文或者密文转明文。
代码
/** * 示例. * <p> * Created by DaiWang on 2020/06/02. * </p> * * @author DaiWang */ @Data @EqualsAndHashCode(of = "id") @Entity @Table(name = "tbl_xxx_chlrecord") public class ChannelRecord2 implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private String id; /** * 请求参数。 * 将自动进行加解密。 */ @Column(name = "[request_param]") @Convert(converter = EncryptConverter.class) private String requestParam;
/** * 自定义转换器: 入库加密,出库解密. * @author DaiWang */ @Converter // Converter属性autoApply 需默认或为false,否则未指定对的字段也会被加密 public static class EncryptConverter implements AttributeConverter<String, String> { /** * 加密. */ @Override public String convertToDatabaseColumn(String text) { // ... 加解密实现 return "密文"; } /** * 解密. */ @Override public String convertToEntityAttribute(String s) { // ... 加解密实现 return "明文"; } } }