解決策を指すリンクを見ましたが、最も関連性が高いのはHow to use Annotations with iBatis (myBatis) for an IN query? ですが、これもOracleドライバの解決策を提供しません。SQLプロバイダ内のMybatis AnnotationでIN句を使用する方法
public String getEmployees(Map<String, Object> params){
//Value hold by params params={empId={123,345,667,888}}
StringBuilder sql=new StringBuilder();
sql.append("Select * from employee where emp_id in (#{empId}");
Mybatisはparamsの値を置き換えます。 しかし、値が代入されると、クエリは以下のようになります。 MyBatisのクエリで単一引用符を追加しているように、無効なクエリである
Select * from employee where emp_id in ('123,345,667,888');
。
修正プログラムでこの問題をどのように処理する必要がありますか? SQLインジェクションを防ぐために値を連結できません。
@Select( " ")私の場合、それも機能しています。 – zhuguowei