现在我有一个要求。
当用户输入存在名称时,我需要快速提示用户可用的名称。而在前端,没有问题。但是在后端,如何编写清晰的代码?
这个功能就像当用户使用名称'Java'注册一个电子邮件帐户时,当发现重复时,会给用户一些可用的名称建议g例如'Java01','Java001','Java002'
目前,我的想法如下, 示例:
用户输入名称为“ Name01 ”。
首先,我使用“JPQL(JPA)”来验证名称是否存在;
如果存在,我将创建一个类似 ' 的 sql,Select name from table a where a.name like 'Name01%'
然后我将获得一个存在名称列表。{'Name012','Name014','Name015'...}
所以我使用'Name01'来概括一个猜测列表{'Name010','Name011','Name012','Name013','Name014',...}
,然后我使用猜测列表来比较存在名称列表,并返回一个 10 大小的列表(它不应该存在于数据库中,用户可以使用其中一个来保存快速请求以避免第二次验证。)例如:{'Name010','Name011','Name013','Name016',...}
但是如果猜测列表都存在于数据库中。我需要按“Name0%”搜索 db 并进行递归。
看起来效率太低了。
我很困惑如何概括一个猜测列表以及如何进行比较会降低比较频率。
有人有好的解决方案吗?
提示:我使用 JSF+EJB+JPA(Eclipse Link 1.0) DB2 名称的最大长度为 10,只能包含字符。