DBAPI的SQL实现模糊查询的3种方案
LIKE 查询
SQL 中的 LIKE 查询可以实现模糊查询,比如查询名字中包含“张”的记录。
sql
select * from student where name like '%张%'在 API 中获取参数 name,并将其传入 SQL 语句中,有以下 3 种方法。
方案一:使用原生 SQL 字符串拼接
MySQL
sql
select * from student where name like CONCAT('%', #{name}, '%')这里使用了 MySQL 的 CONCAT 函数,将百分号 % 与参数 name 进行拼接,实现模糊查询。
Oracle
sql
select * from student where name like '%' || #{name} || '%'在 Oracle 中,使用双竖线 || 进行字符串拼接。
PostgreSQL
sql
select * from student where name like '%' || #{name} || '%'PostgreSQL 中也可以使用双竖线 || 进行字符串拼接。
SQL Server
sql
select * from student where name like '%' + #{name} + '%'在 SQL Server 中,使用加号 + 进行字符串拼接。
方案二:使用动态 SQL 的 bind 标签
DBAPI支持类似mybatis的动态SQL标签语法,通过 bind 标签,将参数 name 拼接模糊查询的通配符%,并生成新的变量 pattern。
完整SQL示例如下:
sql
<bind name="pattern" value="'%' + name + '%'" />
select * from student where name like #{pattern}

方案三:使用参数处理插件
- 访问插件市场,下载
字符串拼接插件,上传到 DBAPI 的extlib目录或者lib目录下,重启 DBAPI 服务。

在
全局插件-参数处理中选择字符串拼接插件。插件参数填写
{"fields":["name"]}。使用此插件后,系统会自动给
name参数值的首尾拼接上%字符。

- SQL 中的like查询可以直接使用参数
#{name},不用拼接通配符。
sql
select * from student where name like #{name}