模糊查詢防SQL注入及索引失效問題


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、索引失效問題

  模糊查詢使索引失效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM