在MyBatis中,OrderBy语句通常是在SQL语句中硬编码的,不支持直接使用外部参数来动态指定排序规则。但是,可以通过动态SQL使用IF或者Choose标签来动态拼接OrderBy语句,从而实现动态排序功能。示例如下:
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM users
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
在调用该select语句时,可以传入一个orderBy参数来指定排序规则,如:
Map<String, Object> params = new HashMap<>();
params.put("orderBy", "id DESC");
List<User> users = sqlSession.selectList("selectUsers", params);
这样就可以根据外部参数动态指定排序规则。