public static SqlParamsPairs handleIn ( String sql , Object [ ] params ) { //split with question mark placeholder String [ ] sqlPieces = sql . split ( "\\?" ) ; //question mark placeholder list String [ ] questionPlaceholders ; if ( sql . endsWith ( "?" ) ) { questionPlaceholders = new String [ sqlPieces . length ] ; } else { questionPlaceholders = new String [ sqlPieces . length - 1 ] ; } for ( int i = 0 ; i < questionPlaceholders . length ; i ++ ) { questionPlaceholders [ i ] = "?" ; } List < Object > plist = new ArrayList < Object > ( ) ; for ( int i = 0 ; i < params . length ; i ++ ) { Object p = params [ i ] ; if ( p . getClass ( ) . equals ( ArrayList . class ) ) { //change ? => (?,?,?...) //change list to objects StringBuilder sb = new StringBuilder ( ) ; sb . append ( "(" ) ; ArrayList inParams = ( ArrayList ) p ; for ( int j = 0 ; j < inParams . size ( ) ; j ++ ) { if ( j != 0 ) { sb . append ( "," ) ; } sb . append ( "?" ) ; //split list to objects plist . add ( inParams . get ( j ) ) ; } sb . append ( ")" ) ; questionPlaceholders [ i ] = sb . toString ( ) ; } else { plist . add ( p ) ; } } //join sql StringBuilder sqlsb = new StringBuilder ( ) ; for ( int i = 0 ; i < sqlPieces . length ; i ++ ) { sqlsb . append ( sqlPieces [ i ] ) ; if ( i < questionPlaceholders . length ) { sqlsb . append ( questionPlaceholders [ i ] ) ; } } SqlParamsPairs spPairs = new SqlParamsPairs ( sqlsb . toString ( ) , plist . toArray ( ) ) ; return spPairs ; }
Change sql if found array in params