一、MyBatis 实现模糊查询的三种SQL拼接方式
1. 使用 ${} 拼接
SELECT * FROM user WHERE name LIKE '%${value}%'
- 在Web项目中,如果没有防范SQL注入的机制,要谨慎使用“${}”符号拼接SQL语句,因为可能会引起SQL注入攻击的风险。
2. sql中字符串拼接
SELECT * FROM user WHERE name LIKE CONCAT('%', #{value}, '%')
- 使用mysql的concat函数,在sql语句中拼接,既能解决sql注入又能够在SQL位置文件中写入“%”。
3. java代码中拼接
java源文件:
/*
或者:
String searchValue = "%" + value + "%";
*/
String searchValue = new StringBuilder("%").append(value).append("%").toString();
// 利用parameterMap,可以将定义参数对象的属性映射到SQL查询语句的动态参数上
parameterMap.put("value", searchValue);
SqlMapper.xml配置文件:
SELECT * FROM user WHERE name LIKE #{value}
- 在java文件中拼接,将修改传递回value值。