自己分装了JdbcTemplate很多方法,其中为了避免SQL注入攻击,采用预编译SQL的
public <T> List<T> query(String sql, RowMapper<T> rowMapper, @Nullable Object... args)
正常 SQL中的condition 采用 select * form t where a=? 方式
对于like 查询有3种解决方案
(1)concat 函数
name like concat('%', key, '%')
(2)空格隔开
name like '%' ? '%'"
(3)args 参数中再加入 %
condition += " and name like ?"; args.add('%'+key+'%');
推荐使用第3中方式,因为保持原SQL整洁 直接 like ? 就可以了,其而方便对原SQL进行强制性检查是否包含 ‘ “ 等关键性字符 , 如果使用 带有 ‘%’ 等关键字,就不好判断是否是SQL注入攻击