mybatisにおける${}と#{}の違い
1240 ワード
今日、プロジェクトでeasyui転送ソートフィールドを使用してソートが行われましたが、成功せず、データはソートされていません.
mybatisでforeachを使用してループします.
ORDER BY 'sid asc', 'urlname desc', 'sitename desc'
これは#{}と${}の違いです.${}を使用します.
sql文は次のとおりです.
ORDER BY sid asc, urlname desc, sitename desc
#{}取得したデータは文字列に変換され、''ラップを使用し、${}取得したデータは処理されません.
if (sort != null && order != null) {
String[] sorts = sort.split(",");
String[] orders = order.split(",");
String orderbys = "";
for (int i = 0; i < orders.length; i++) {
orderbys = sorts[i] + " " + orders[i] + ",";
}
orderbys = orderbys.substring(0, orderbys.length() - 1);
map.put("orderbys",orderbys.split(","));
}
マルチ条件ソートを使用するため、配列は[sid asc,urlname desc,sitename desc,sitename desc]などの配列で格納されます.mybatisでforeachを使用してループします.
ORDER BY
#{item}
上記の論理を使用して得られたsql文は、次のとおりです.ORDER BY 'sid asc', 'urlname desc', 'sitename desc'
これは#{}と${}の違いです.${}を使用します.
ORDER BY
${item}
sql文は次のとおりです.
ORDER BY sid asc, urlname desc, sitename desc
#{}取得したデータは文字列に変換され、''ラップを使用し、${}取得したデータは処理されません.