シーン
// 防止SQL注入 ストリームの<string> idList = accDocIDList.stream()マップ((X) - > { 場合(x.matches( "[^-ZA-Z0-9-]" )) { // スロー新しいBalanceException( "XXX-XXX"、 "笑"); スロー 新しいのRuntimeException( "非法凭证IDを" ); } を返す String.Formatの( " '%1 $ s'が" 、Xを); }); パラメータ = 新しいIDbParameter [] { bqlExecuter.makeInParam( "FUNCID" 、FUNCID)"ユーザID" 、ユーザID)、 bqlExecuter.makeInParam( "accOrgID" 、accOrgID)、 bqlExecuter.makeInParam( "AccLedgerID" 、元帳)、 bqlExecuter.makeInParam( "年" 、年)、 bqlExecuter.makeInParam( "フラグ"、「1 " )、 bqlExecuter.makeInParam( "accPeriodID" 、accPeriodID) }。 // 分页 int型のpageSize = 900 ; int型 PAGENUM = 0 ; accDocIDList.size()) { リストの<string>一覧= IDLIST .SKIP(PAGENUM).limit(pageSizeを).collect(Collectors.toList()); //ここストリームを再使用して第2ストリームが与えられたサイクル閉じた時に操作したり、既にされて 文字列idsql = BQL + "とa.idに(" + String.Join( ""、リスト)+ ")" ; VAR RET = bqlExecuter.executeBqlStatement(idsql、refEntityIDs、パラメータ); PAGENUM ++ ; }
回避策サプライヤ
// 防止SQL注入 サプライヤー<ストリームの<string >> idList =() - >。accDocIDList.stream()はマップ((X) - > { 場合(x.matches( "[^-ZA-Z0-9-] " )) { // 新しいBalanceException(スロー"笑「、 "XXX-XXX")を、 スロー 新規のRuntimeExceptionを( "非法凭证ID" ); } 戻り String.Formatのを( " '%1 $ S'" 、X)。 }); パラメータ = 新しいIDbParameter [] { bqlExecuter.makeInParam( "FUNCID" 、FUNCID)"ユーザID" 、ユーザID)、 bqlExecuter.makeInParam( "accOrgID" 、accOrgID)、 bqlExecuter.makeInParam( "AccLedgerID" 、元帳)、 bqlExecuter.makeInParam( "年" 、年)、 bqlExecuter.makeInParam( "フラグ"、「1 " )、 bqlExecuter.makeInParam( "accPeriodID" 、accPeriodID) }。 // 分页 int型のpageSize = 900 ; int型 PAGENUM = 0 ; accDocIDList.size()) { リストの<string>リスト= idList.get() .SKIP(PAGENUM).limit(pageSizeを).collect(Collectors.toList())。 ストリングidsql = BQL + "とでA.ID(" + String.join( ""、リスト)+ ")" 。 VAR RET = bqlExecuter.executeBqlStatement(idsql、refEntityIDs、パラメータ) PAGENUM ++ ; }