当前位置: 首页 > 面试题库 >

处理QueryDSL中的可选参数

钱志义
2023-03-14
问题内容

我在SpringData中使用QueryDSL。我说表,Employee我创建了实体类,EmployeeEntity 我写了以下 服务 方法

public EmployeeEntity getEmployees(String firstName, String lastName)
{
    QEmployeeEntity employee = QEmployeeEntity.employeeEntity;
    BooleanExpression query = null;
    if(firstName != null)
    {
        query = employee.firstName.eq(firstName);
    }
    if(lastName != null)
    {
        query = query.and(employee.lastName.eq(lastName)); // NPException if firstName is null as query will be NULL
    }
    return empployeeDAO.findAll(query);
}

如上所述,我评论了NPException。如何使用 QueryDSL 在可选参数 QueryDSL 使用Spring的数据?

谢谢 :)


问题答案:

BooleanBuilder 可以用作布尔表达式的动态生成器:

public EmployeeEntity getEmployees(String firstName, String lastName) {
    QEmployeeEntity employee = QEmployeeEntity.employeeEntity;
    BooleanBuilder where = new BooleanBuilder();
    if (firstName != null) {
        where.and(employee.firstName.eq(firstName));
    }
    if (lastName != null) {
        where.and(employee.lastName.eq(lastName));
    }
    return empployeeDAO.findAll(where);
}


 类似资料:
  • 我将QueryDSL与SpringData一起使用。我有表say,并创建了实体类say,我编写了以下服务方法 与上面一样,我注释了。如何在使用Spring数据的QueryDSL中对可选参数使用QueryDSL?

  • Spring控制器有可能同时处理这两种请求吗? 1) 2) 如果我定义了一个这样的控制器:

  • 问题内容: 我希望它能够仅使用lira_cbt作为参数(执行x),或者同时使用lira_cbt和eur_hedge(执行y)运行。可以使用sys.argv实现吗? 问题答案: 只需使用长度

  • 问题内容: 只是想知道是否有一种更优雅或更标准的方式来处理可选参数,或者是否必须检查每个参数是否为空。我有10多个可选参数,因此变得有点难看。 理想情况下,我想是这样的bash命令:。 问题答案: 编写这样的实用程序

  • 我基本上想有一个可选的完成处理器,没有参数被传递回来。这是我目前掌握的情况,但显然是错误的。 我不想在完成块中传递任何参数。我只想知道网络调用何时完成,以便刷新UI。我不想在这里刷新UI,因为我希望它充当刷新数据的通用函数。我之所以希望完成处理程序是可选的,是因为有时候刷新完成后我不需要做任何事情。 我也很困惑“逃离”是什么意思。当我做这样的事情时,我通常会有它,但任何清晰都会很好。我在网上做了一

  • 问题内容: Go可以有可选参数吗?还是可以只定义两个具有相同名称和不同数量参数的函数? 问题答案: Go没有可选参数,也不支持方法重载: 如果方法调度也不需要进行类型匹配,则可以简化该方法。其他语言的经验告诉我们,使用具有相同名称但签名不同的多种方法有时会很有用,但在实践中也可能会造成混淆和脆弱。在Go的类型系统中,仅按名称进行匹配并要求类型一致是简化的主要决定。