MyBatis根据传入字段排序
- 1. 需求描述
- 2. 解决方案
- 2.1 解决思路
- 2.2 实现方式
1. 需求描述
分页列表查询,为了提高可扩展性,支持不同字段排序查询,所以根据传入字段及排序方式查询。
2. 解决方案
2.1 解决思路
方式是mybatis的mapper文件中sql拼接即可。
mybatis排序时使用order by 动态参数时需要注意,用$而不是#
#{} ,会对自动传入的数据加一个双引号,导致排序失败,如 order by #{age},解析结果 order by "age"
${},不会对传入值添加引号,但是可能会发生SQL注入,如 order by ${age},解析结果 order by age
注意:
虽然解决了灵活性扩展性,但是引入了sql注入的风险,具体情况还是要根据公司合规要求及业务场景斟酌使用。
2.2 实现方式
sortField:是传入字段
positiveOrReverse:升序还是降序(desc 降序,asc 升序)
<sql id="pageQueryOrder">
<choose>
<when test="sortField != null and sortField != ''">
order by ${sortField}
<if test="positiveOrReverse != null and positiveOrReverse != ''">
${positiveOrReverse}
</if>
limit #{offset}, #{pageSize}
</when>
<otherwise>
order by create_time desc limit #{offset}, #{pageSize}
</otherwise>
</choose>
</sql>
更多推荐
MyBatis根据传入字段排序
发布评论