Der Code lautet wie folgt:
/** * 动态生成SQ及SQL参数L * @param ve 接收到的消息的CHGLIST * @param paramList MQ消息中的SQL参数 * @param t 泛型对象 * @param table 数据表 * @param list 可执行SQL语句集合 * @return */public <T> String updateSqlAndParamList(Vector<String> ve,List<String> paramList,T t,String table,List<String> list){ String strSql="";//MQ消息SQlString upSql="";//可执行SQLtry {//组装SQL语句strSql = "update "+table+" set "; upSql="update "+table+" set ";for(int i = 0; i < ve.size(); i++){ String str = ""; String upStr=""; String key = ve.get(i); String fileName="get"+key.toUpperCase(); String value=(String)t.getClass().getMethod(fileName).invoke(t); paramList.add(i,value);if(i == ve.size()-1){ str = key+" = ?"; upStr=key+"='"+value+"'"; }else{ str = key+" = ? ,"; upStr=key+"='"+value+"',"; } strSql+=str; upSql += upStr; } strSql +=" where Id = ? "; upSql+=" where id='"+(String) t.getClass().getMethod("getID").invoke(t)+"'"; list.add(upSql); paramList.add(ve.size(),(String) t.getClass().getMethod("getID").invoke(t)); } catch (Exception e) { logger.info("组装UPDATE SQL失败!失败详情---"+e); }return strSql; }
1. Verwenden Sie dynamische Anweisungen
Viele Datenbanken bieten Syntax für die Verarbeitung von dynamischem SQL. wie die EXECUTE IMMEDIATE-Anweisung von Oracle, die EXEC und SP_EXECUTESQL von MSSQL, die vorbereiteten Anweisungen von MySQL usw. Mit diesen Funktionen können wir dynamische Abfragen auf der Datenbankseite verarbeiten und eine hervorragende Durchquerung ermöglichen. Diese Methode eignet sich jedoch nur für relativ einfache dynamische Abfragen. In komplexen Situationen wird häufig die folgende Methode verwendet.
2. Verwenden Sie gespeicherte Prozeduren
Für komplexe Situationen wird dynamisches SQL im Allgemeinen in gespeicherte Prozeduren gespleißt. Die Verwendung gespeicherter Prozeduren ist relativ flexibel, aber die Codierungskomplexität ist zu hoch und manchmal ist die Ausführungseffizienz gering.
3. Verwenden Sie andere (z. B. JAVA) Programme.
Die Verwendung anderer externer Hochsprachen (z. B. JAVA) zum Spleißen und anschließenden Übergeben an die Datenbank zur Ausführung ist ebenfalls möglich Es bietet eine hohe Flexibilität, aber aufgrund der mangelnden Unterstützung von JAVA für Satzberechnungen ist die Durchführung dieser Vorbereitungen nicht einfach.
Wenn das Hauptsteuerungsprogramm, das dynamisches SQL ausführen muss, JAVA ist, können Sie esProc verwenden, um bei der Durchführung dynamischer SQL-Berechnungen zu helfen führt eine dynamische SQL-Ausführung durch. esProc bietet eine JDBC-Schnittstelle, die zwischen Java-Anwendungen und Datenbanken platziert werden kann, sodass Anwendungen weiterhin esProc-Skripte ausführen können, als würden sie auf die Datenbank zugreifen, und zwar nahezu ohne Änderungen an der Anwendungsstruktur.
Im Folgenden wird anhand von Beispielen veranschaulicht, wie mit esProc dynamische SQL-Berechnungen durchgeführt und in JAVA-Programme integriert werden können.
Das obige ist der detaillierte Inhalt vonJava generiert SQL-Anweisungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!