1、模糊查詢常見問題
- 不正確的表達方式會出現SQL注入的危險 ,示例如下:
1 <select id="test1" resultType="User">
2 select * from user
3 where name like '% ${name} %'
4 </select>
原因:${ } 方式將參數寫進SQL是采用的字符串拼接,並未編譯。
- 模糊查詢會導致索引失效,必然其查詢速度也會有所下降,當數據量過大時,查詢有可能就會超時,數據加載緩慢。
2、模糊查詢mybatis正確實現方法
- 手動在參數中添加 % 通配符 ,如 name = “% Su %” ;
- 利用MySQL中的concat函數,示例如下:
<select id="test2" resultType="User"> select * from user where name like concat('%', #{name}, '%') </select>
- 類似於concat函數的bind標簽
<select id="test2" resultType="User"> <bind name = "username" value = "'%' + _parameter.getTitle() + '%'" /> select * from user where name like #{username} </select>
3、索引失效問題
模糊查詢使索引失效
