mybatisにおける${}と#{}の違い

1240 ワード

今日、プロジェクトでeasyui転送ソートフィールドを使用してソートが行われましたが、成功せず、データはソートされていません.
		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
#{}取得したデータは文字列に変換され、''ラップを使用し、${}取得したデータは処理されません.