我有一个User类,我想从数据库中提取该类的所有对象。我正在使用Spring Data JPA,并使用@Query
来获取数据。有没有一种方法可以隐藏用户电话号码的部分数字。类似于将123-456-7890转换为123-XXX-XXXX。
@Query(value = "SELECT u FROM User u ORDER BY u.name")
List<User> getAllUsers();
我正在代码中的多个位置使用用户对象,因此每次获取和更新记录都非常耗时,并且用户会随着时间增长,因此也会影响性能。
是否有任何方法(某些后处理程序或其他方法)可以在从数据库处理完数据后将数据填充到对象中时对其进行处理。
任何指针都将非常有帮助。
谢谢。
答案 0 :(得分:1)
您可以在使用属性转换器获取数据时转换数据。
public class PhoneNumberAttributeConverter implements AttributeConverter<String, String> {
@Override
public String convertToDatabaseColumn(String value) {
return value;
}
@Override
public String convertToEntityAttribute(String a) {
String value = a.substring(0, 3) + s.substring(3).replaceAll("[0-9]", "X");
return value;
}
}
并在现场使用它
@Convert(converter = PhoneNumberAttributeConverter.class)
private String phoneNumber;