mysql 原生 SQL 语句的多条件查询封装,蛮适合日常开发中那些字段可选、查询条件又多又乱的场景。你总不能每次都写一堆 if 判断拼 SQL 吧?封装下,用起来顺手,改起来也方便,适合维护老项目或者和后端对接比较紧的前端同学。

多条件查询的痛点一个是字段不固定,一个是组合方式多。用 mysql 原生语句写的时候,逻辑清晰点,维护起来也轻松。不管你是查status、查date还是查username,都能灵活加进去,拼接也不麻烦。

你可以封装一个方法,比如接收一个params对象,遍历它拼WHERE条件。比如:

function buildQuery(params) {
  let sql = 'SELECT * FROM users WHERE 1=1';
  if (params.status) sql += ` AND status = '${params.status}'`;
  if (params.name) sql += ` AND name LIKE '%${params.name}%'`;
  return sql;
}

这样写虽然是原生 SQL,但逻辑简单清晰,不用 ORM 你也能写得优雅。响应也快,调试也方便。适合对性能比较敏感的查询场景。

如果你还想多了解多条件查询的其他实现方式,比如用 Access、SQL Server 甚至 Oracle 写的风格,也可以看看这些:

如果你正在写查询逻辑,不妨用原生 SQL 试试,简单直接,有啥问题也容易排查。