【发布时间】:2013-06-07 19:07:45
【问题描述】:
我是 Spring 新手,虽然我的问题可能看起来不成熟。
这是我一直陷入的一个大障碍。我正在尝试选择正确的方法来实现基于通配符的搜索逻辑,无论是选择 JDBC、Hibernate 还是 JPA 和存储库。
我将演示这个问题。假设我们在网页中有一个搜索表单,有人可能会在其中进行查询以检索 FirstName 和 LastName,并说例如有记录:
- “弗雷德·弗雷德里克森”
- “阿尔伯特詹姆逊”
- “沃森达尔博特”
可以使用 *alb* 之类的东西,我们应该得到:
- “阿尔伯特詹姆逊”
- “沃森达尔博特”
或者使用 ????son 我们希望只得到“Albert Jameson”。
学习Spring我发现“like”子句可能只是硬编码的,比如:
@Query("select u from User u where u.firstname like %?1") 列出 findByFirstnameEndsWith(String firstname);
如果使用 JPA 存储库。
我希望我的问题更清楚了。
非常感谢您提供任何帮助或相关建议。
【问题讨论】:
-
MySQL(我相信其他 SQL 兄弟)具有基于正则表达式搜索事物的能力。我认为您不想在 Java 中重新发明轮子。
-
是的,MySql 本身就有这种能力,但是,你应该,比如说,硬编码 Java 中的所有方法,比如“findByFirstName”或“findById”或类似的东西。我可能错了......我们如何调整java中的方法从搜索表单中获取通配符?
标签: java spring search wildcard sql-like