我在spring-boot存储库中写了这段代码,根据用户提供的状态,从用户在前端搜索面板中输入的某个值开始获取clientInfo。但是查询中的LIKE":nameFilter%"部分没有正确执行,查询返回null。我怎样才能让它工作?
@SqlQuery("SELECT * FROM ClientInfo WHERE status = :status AND name LIKE ':nameFilter%' ORDER BY createdAt DESC LIMIT 10 OFFSET :page")
@RegisterBeanMapper(ClientInfo.class)
public List<ClientInfo> getClientInfoByStatusDESC(@Bind int page,String status,String orderBy,String nameFilter);
您只需要从LIKE语句中删除单引号:
@SqlQuery("SELECT * FROM ClientInfo WHERE status = :status AND name LIKE :nameFilter% ORDER BY createdAt DESC LIMIT 10 OFFSET :page")
您可以尝试CONCAT
,这是MySQL的一个函数,用于将查询参数与其他参数组合。
LIKE CONCAT(:name, '%')