mybatis中動態排序失效

2021-10-21 03:19:51 字數 514 閱讀 7864

mybatis中動態排序失效

應用場景

在應用程式中需要根據表頭設定資料的排序欄位與規則。

問題

將排序欄位與排序規則以引數的形式動態傳入了mybatis的xml中,然而實際執行結果仍然是預設字段公升序的查詢結果。

原因

為了預防sql注入問題,在xml檔案中接收動態引數採用的是#的方式,基於mybatis的預編譯,排序欄位會編譯為"引數名",從而導致動態排序失效

例如:期望結果:order by transamount desc

實際結果:order by "transamount" "desc"

此時查詢結果排序失效

解決辦法

由於本人使用過程中,排序欄位是在**中獲取,不存在sql注入的風險,因此修改xml檔案中接受引數的方式即可

order by $ $

mybatis 動態排序

mybatis動態排序目前知道的方式有兩種 1.通過pagehelper com.github.pagehelper pagehelper 版本5.1.4 stringbuffer orderby new stringbuffer 欄位名稱 排序方式 pagehelper.startpage vo....

MyBatis動態排序問題

在使用mybatis時加入來按指定字段進行排序 order by id asc create time asc 執行後,加入的排序無效 原因是 mybatis會建立預編譯的語句,然後為它設定相應的值 mybatis會自動將排序字段當成乙個字串,等同於order by create time desc...

Mybatis實現 動態排序

比如,現在我要查詢使用者資訊 user 表。可以在查詢時,介面中,多新增兩個字段。orderfield 排序列 ordertype 排序規則,公升降序 select name age user grade as usergrade from user if test orderfield null ...