java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > mybatis升降序

mybatis实现动态升降序的问题小结

作者:亚林瓜子

文章介绍了如何在MyBatis的XML文件中实现动态排序,使用$符号而不是#符号来引用变量,以避免SQL注入,同时,强调了在Java代码中进行防注入处理的重要性,感兴趣的朋友一起看看吧

问题

最近有一个需求,需要前端告诉后端按照某个字段进行排序。这里主要侧重mybatis的xml实现,其他Spring集成就忽略了。

mapper xml实现

<if test="sortField != null and sortField != ''">
    ORDER BY
    <choose>
        <when test="sortField == 'perCapitaEffectivePoints'">
            per_capita_effective_points ${sortOrder}
        </when>
        <when test="sortField == 'perCapitaCumulativePoints'">
            per_capita_cumulative_points ${sortOrder}
        </when>
        <otherwise>
            dept_name
        </otherwise>
    </choose>
</if>

注意,这里使用的是$而不是使用#,如果使用#语法mybatis拼接出来Order by子句不符合sql语法。只能使用$语法引用变量。这里还需要在java代码里面做一些防注入处理。类似如下:

String validatedSortOrder = "DESC".equalsIgnoreCase(sortOrder) ? "DESC" : "ASC";

后面使用validatedSortOrder变量的数据传给mybatis就可以了。

到此这篇关于mybatis里面实现动态升降序的文章就介绍到这了,更多相关mybatis升降序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

阅读全文