java - 来自 Spring JPA 查询的自定义结果
问题描述
我有一个 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();
我在代码中的多个位置使用用户对象,因此每次获取和更新记录将非常耗时,并且用户会随着时间的推移而增长,因此也会影响性能。
有什么方法(一些后处理器或任何东西)可以在从数据库中获取数据后将数据填充到对象中来处理它。
任何指针都会非常有帮助。
谢谢。
解决方案
您可以在使用属性转换器获取时转换您的数据。
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;
推荐阅读
- ios - 如何生成 Swift *Runtime* 警告消息?
- javascript - 为什么最后一个 console.log 中的侦听器数组长度是 3 而不是 2?
- php - 允许的内存大小 138412032 字节用尽(尝试分配 20480 字节)
- android - 如何使用 onTouchEvent 或任何其他方式在 graphView 上绘制形状?
- java - 如何检测处于僵尸状态的 Kafka Streams 应用程序
- coldfusion - 尝试在 Coldfusion 中设置亚马逊 MWS。超级简单的请求未获得授权
- python - 将 Python 连接到盆景
- node.js - Angular 9 通用为什么只有一半的应用程序用 ngx-translate 翻译?
- android - 如何使用嵌套值 Android 从 API 中检索数据?
- docusignapi - DocuSign 如何搜索用户有权访问的共享信封?