<selectid="findAddByName"parameterType="String"resultMap="studentResultMap"> SELECT * FROM user WHERE username LIKE '%${value}%' </select>
该SQL解析为:
1
SELECT*FROMuserWHERE username LIKE'%Amy%';
上述通过${}虽然可以实现对包含”Amy”对模糊查询,但是不安全,可以改用#{},如下所示:
1 2 3
<selectid="findAddByName"parameterType="String"resultMap="studentResultMap"> SELECT * FROM USER WHERE username LIKE CONCAT('%', #{username}, '%') </select>
该SQL解析为下文所示,其效果和上文方式一致
1
SELECT*FROMUSERWHERE username LIKE CONCAT('%', 'Amy','%');
<selectid="findAddByName3"parameterType="String"resultMap="studentResultMap"> SELECT * FROM USER WHERE username LIKE '%Am%' ORDER BY #{value} ASC </select>
则SQL解析及执行结果如下所示,很明显 ORDER 子句的字段名错误的被加上了引号,致使查询结果没有按期排序输出
<selectid="findAddByName3"parameterType="String"resultMap="studentResultMap"> SELECT * FROM USER WHERE username LIKE '%Am%' ORDER BY ${value} ASC </select>
则SQL解析及执行结果如下所示:
1
SELECT*FROMUSERWHERE username LIKE'%Am%'ORDERBY sex ASC;