背景:
開發中有時會遇到各種事,比如項目組有Utils類方法,解析腳本後得到一個較長的sql語句,通過原生jdbc的原生ps方法查詢時查不到數據的情況。
首先個人肯定是不建議在Utils裏解析腳本後拼接sql的,存在sql注入的危險。
那如何用myabtis動態生成sql(整個sql都是動態的,不確定性非常大,sql來源於腳本),又得防止sql注入問題?
最好的辦法還是在腳本生成的步奏進行限制,對某些關鍵字進行限制,保存時進行過濾。
現在項目趕着上線,ps出現了映射問題,查詢交給了mybatis去查詢,參數只有一個,就是這個解析後的sql,返回結果爲hashmap(屬性和值都不確定)
需要注意的是$符號,因爲整個sql語句裏一定存在關鍵符號,防止被轉義使用${str}把原sql完整設置上去。
mapper接口裏要加上@Param
最後查詢結果map裏只會有有值的key-value對