mybatis模糊匹配采用concat与#{},动态sql讲解
字符拼接
在模糊匹配的时候,如果直接如此:
select *
from db01
where name like '%#{name}%';
会报错,因为#{}预编译的占位符问号不能出现在字符号里面,会被当成字符串。
改进:
select *
from db01
where name like '%' + ${name} + '%';
这样不会报错,但是直接拼接字符串的方式,有可能会被sql注入代码,使得数据库不安全。
所以最终可以采用concat拼接的方法,返回的是整个字符串:
select *
from db01
where name like concat('%',#{},'%');
动态sql
在面对多种条件的查询或者sql语句的时候,根据条件状态不同,可以响应不同的sql语句,这就需要在xml映射文件中采用,等语法标签。