如何使用java.sql中where子句的动态计数执行mysql语句

时间:2014-04-05 15:06:03

标签: mysql jersey

我有一个球衣java服务器和一个mysql服务器:

我向服务器发送POST ArrayList<Long>。然后我想做一个像...where long OR long OR long....

这样的选择

有没有一种优雅的方法可以解决这个问题,而不是总是在for循环中做一个选择?

如何使用where子句的动态计数形成sql语句?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

而不是OR多次,您可以在SQL查询中使用IN where子句。
您可以在循环中读取ArrayList对象并设置where子句值。

JAVA代码段

int paramCount = list.size();

StringBuilder sqlSelect = new StringBuilder( 1024 );
sqlSelect.append( "select x,y,z from my_table " ); 

if( paramCount > 0 ) {
  sqlSelect.append( "where long_column in ( " );
  for( i = 0; i < paramCount; i++ ) {
    sqlSelect.append( ( i > 0 ? ", ?" : "?" );
  } // for each param
  sqlSelect.append( " )" );
} // if list is not empty

// make the prepare statement (pst) with the above sql string
// ...

// now set the parameter values in the query
int paramIndex = 1;
if( paramCount > 0 ) {
  for( i = 0; i < paramCount; i++ ) {
    pst.setLong( paramIndex++, ( (Long)list.get( i ) ).longValue() );
  } // for each param
} // if list is not empty