在mapper中写 模糊查询,按名称查询时,直接在sql语句中写%x%,等于写死在里面了,以后
每次查询都需要改动,那怎么办呢?
1.加入concat()关键字:concat('%',#{name},'%') 不常用,比较麻烦。动态参数 底层调用parperedStatement 可防止sql注入
2.'%' #{name} '%' 常用 中间有空格注意。动态参数 底层调用parperedStatement 可防止sql注入 常用。指编译一次。执行效率高,替换数据。
3.'%${value}%' 中间只能写value ,固定写法。字符串拼接 底层调用statement 会造成sql注入。不能用。有几条编译几次,效率低。
还有要注意,只要模糊查询条件不是来自表单,就不会有sql注入的问题,但是一旦来自表单,就会出现sql注入的问题。
所以推荐 2