クエリパラメータlistに基づいてSQLを動的に接続

1940 ワード

ビジネスシーンでは、クエリーパラメータリストに基づいてSQL文を動的につづります.
たとえば、ツールで実行できるsqlは次のとおりです.
select a0.sku_id from  (select sku_id from wms_sku_attribute where attribute_list_id = '7')a0 inner join (select sku_id from wms_sku_attribute where attribute_list_id = '11')a1 on a0.sku_id = a1.sku_id inner join (select sku_id from wms_sku_attribute where attribute_list_id = '13')a2 on a0.sku_id = a2.sku_id 
a 0--aN個のクエリー文がある可能性があります.
StringBuilder builder =new StringBuilder();
sql.append("select a0.sku_id from ");
for(int i=0;i;i++){
   builder.append("(select sku_id from wms_sku_attribute where attribute_list_id = '"+list.get(i)+"')a"+i);
   if(i==0){
      sql.append(" inner join");
   }else {
      sql.append(" on a0.sku_id = a"+i+".sku_id inner join");
   }
}
String sql= builder.toString();
sql= sql.substring(0,sql.length()-("inner join").length());