前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
sortWay 是參數。 當sortWay ?為 llpx 就?ORDER BY FORMAT ASC,為?btypx 就ORDER BY BID DESC ,為?zhpx 就?ORDER BY FORMAT ASC,BID DESC?
<select id="selectXXX" parameterType="Map" resultMap="XXXXResultMap">SELECT XXX,XXX FROM TB_XXX <where><if test="id != null and id != ''">AND ID = #{id}</if><if test="account != null and account != ''">AND ACCOUNT = #{account}</if><if test="state != null and state != '' and state.code != null and state.code != ''">AND STATE = #{state.code}</if></where><order><if test=" sortWay != null and sortWay == 'llpx'">ORDER BY FORMAT ASC</if><if test=" sortWay != null and sortWay == 'btypx'">ORDER BY BID DESC </if><if test=" sortWay != null and sortWay == 'zhpx'">ORDER BY FORMAT ASC,BID DESC </if></order></select>
我本來覺得上面方法是可以的,但是不知道什么地方有問題運行會說在<order> 位置就該是<mapper>標簽了。
希望有人解決了給我說下這個方法是不是可以用。
?
?
?
最后Order By 排序條件中帶參數的寫法 ?我還是無奈的用?ORDER BY ${sortSql} ?,就是在后面傳參數 拼sql的方式實現的。
我查到說${}是不安全的,推薦用#{}。
#{}是安全的,可以防止sql注入,會預預編譯在參數外面加上單引號‘’ ,在order by后面參數加單引號會語句無效。只好還是用了${}。
?
這個問題怎么辦 ?如果有人知道也非常希望給我說說。
?
?
后記 :?ORDER BY ${參數1}?${參數2} ? 這種寫法是OK的,只是要在代碼中先過濾性驗證前端傳入的參數是不是合規的,作驗證防止sql注入。
?
?