在 MyBatis 中,可以使用動態 SQL 來實現 like 操作的排序功能。動態 SQL 可以根據條件動態生成 SQL 語句,從而實現排序功能。
例如,可以使用 <if>
標簽來判斷條件是否滿足,然后生成相應的 SQL 語句,如下所示:
<select id="selectUsers" parameterType="map" resultType="User">
SELECT * FROM users
<where>
<if test="name != null">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
</where>
<if test="orderBy != null">
ORDER BY ${orderBy}
</if>
</select>
在上面的例子中,如果傳入了 name
參數,則會根據 name 進行 like 查詢;如果傳入了 orderBy
參數,則會根據 orderBy 字段進行排序。
在調用該 SQL 語句時,可以傳入相應的參數來實現排序功能。例如:
Map<String, Object> params = new HashMap<>();
params.put("name", "John");
params.put("orderBy", "age DESC");
List<User> users = sqlSession.selectList("selectUsers", params);
這樣就可以根據 name
進行 like 查詢,并根據 age
字段進行降序排序。