![querydsl多表查询](https://i-blog.csdnimg.cn/blog_migrate/27dbcf3851422ad054ee9a09abce2e13.png)
querydsl多表查询
在我们最近的一个项目中,我们的客户要求一个搜索字段,该字段将能够搜索名字,姓氏和电子邮件地址,唯一的通配符是星号“ *”,表示部分匹配。 听起来很简单,但它使我们陷入了混乱。 在我们的项目中,我们将QueryDSL与JPA和MySQL结合使用作为基础关系数据库管理系统。
这意味着一个字符的默认通配符为“ _”,多个字符的默认通配符为“%”。 支持部分匹配的“ *”非常容易:我们只需在搜索字符串中将“ *”替换为“%”,然后将其作为值传递给JPA Query LIKE表达式即可。
我们的代码如下所示:
searchText = searchText.replace( "*", "%" );
query.where( user.email.like( searchText ).or(
user.firstName.like( searchText ).or(
user.lastName.like( searchText )
)
) )
在此时搜索firstname_lastname@example.org时,当前查询仍返回两个结果:firstname_lastname@example.org和f