Vor kurzem habe ich in meiner Freizeit ein Beispiel dafür entwickelt, über Verpackungen zu schreiben und dann die vorherigen zu sortieren.
public class -basierte ABSETZT RSSET RS; getClass (). GetGenericsuperClass (); PersistentClass = (Klasse <T>) Typ.GetActualtTePearGumente () [0];} /** * speichern * @param entity * @return * /public int Save (t enttity) throws Exception {String SQL = "Into" + Entity.). . method.getName (). substring (3) .tolowerCase () + ","; sbf.format (methode.invoke (Entity, neues Objekt [] {})); } else {obj [i] = method.invoke (Entity, neues Objekt [] {}); } i ++; } // Entfernen Sie den letzten, Symbol Integrieren in den Tabellennamen (ID, Name, E -Mail) Werte (SQL = SQL.Substring (0, sql.lastindexof (",")+") Werte ("; // Vorkompilierte SQL -Anweisung Einfügung in Tabellenname (ID, E -Mail) VULIDE () VULEBLE (). + = "?,"; Conn.Preparestatement (SQL); Löschen * @param Objekt * @return * @throws SQLEXception */public int deleteId (Object Object) löst eine Ausnahme aus {String sql = "aus" + persistentClass.getSimplename (). Zum Beispiel basieren ASO <T>, dh die spezifische Art von T. entity = persistentClass.Newinstance (); // Das Methodenobjekt, das den Primärschlüssel des Pojo -Methode (oder der zu bedienenden Tabelle) speichert, idMethod = null; List <Methode> list = this.matchPojomethods (Entity, "set"); Iterator <Methode> iter = list.iterator (); // filtern Sie das Method -Objekt while (iter.hasnext ()) {Methode tempMethod = iter.next (); if (tempMethod.getName (). indexof ("id")! } else if ((entity.getClass (). getImplename () + "id"). EqualSignoreCase (tempMethod.getName (). Substring (3))) {idMethod = tempMethod; }} // Der erste Buchstabe wird in Kleinbuchstaben SQL += IdMethod.getName (). Substring (3,4) .TolowerCase () +idMethod.getName (). Substring (4) +"=?" System.out.println (SQL); ST = Conn.Preparestatement (SQL); // Beurteilen Sie die Art der ID, wenn (Objektinstanz von Integer) {St.Setint (1, (Ganzzahl) Objekt); } else if (ObjectinstanceOf String) {St.SetString (1, (String) -Objekt); } result = St.ExecuteUpdate (); jdbcutil.getClose (rs, st, conn); return result;}/** * modifizieren * @param entity * @return * @throws Exception */public int update (t enttity) throws Exception {String SQL = "upds" + enttity.getClasse (). this.MatchPojomethods (Entität, "get"); // Ladeparameter Objekt obj [] = neues Objekt [list.size ()]; int i = 0; // Temporäres Methodenobjekt, verantwortlich für die Iterierung des Modemethode -Objekts. Methode tempMethod = null; // Da die ID während der Änderung nicht geändert werden muss, sollte das Hinzufügen von Parametern in der Reihenfolge die ID auf das Ende verschieben. Methode IDMethod = NULL; Iterator <Methode> iter = list.iterator (); while (iter.hasnext ()) {tempMethod = iter.next (); // Wenn der Methodenname eine ID -Zeichenfolge enthält und die Länge 2 ist, wird er als ID betrachtet. if (tempMethod.getName (). lastIndexof ("id")! // Speichern Sie das Objekt des ID -Feldes in eine Variable und löschen Sie es im Satz. IdMethod = tempMethod; iter.remove (); // Wenn der Methodenname entfernt wird und die Set/GET-String mit Pojo + "ID" (Fall unempfindlich) nicht kompatibel ist, wird er als ID angesehen. tempMethod.invoke (Entity, neues Objekt [] {}); IdMethod = tempMethod; iter.remove (); }} // Verschieben Sie den iterativen Zeiger auf die erste Position iter = list.iterator (); while (iter.hasnext ()) {tempMethod = iter.next (); sql + = tempMethod.getName (). substring (3) .tolowerCase () + "=?,"; obj [i] = tempMethod.invoke (Entity, neues Objekt [] {}); i ++; } // Entfernen Sie den letzten, Symbol SQL = SQL.Substring (0, Sql.LastIndexof (",")); // Bedingung sql + = "where" + idMethod.getName (). Substring (3) .TolowerCase () + "=?"; // SQL -Spleißen ist abgeschlossen, drucken sql Anweisung System.out.println (SQL); ST = Conn.Preparestatement (SQL); für (int j = 0; j <obj.length; j ++) {St.SetObject (j+1, obj [j]);} result = St.ExecuteUpdate (); jdbcutil.getClose (RS, ST, Conn); Rückgabeergebnis;} public t findById (Objektobjekt) löst eine Ausnahme aus {String sql = "aus" aus " + persistentClass.getSimplename (). TolowerCase () +" Where "; // Verwenden Sie den Konstruktor der Unterklasse, um den spezifischen Typ des parameterisierten Typs zu erhalten. Zum Beispiel basiert der basiertes <t>, dh die spezifische Art von t entity = persistentClass.Newinstance (); // Das Methodenobjekt, das den Primärschlüssel des Pojo -Methode (oder der zu bedienenden Tabelle) speichert, idMethod = null; List <Methode> list = this.matchPojomethods (Entity, "set"); Iterator <Methode> iter = list.iterator (); // filtern Sie das Method -Objekt while (iter.hasnext ()) {Methode tempMethod = iter.next (); if (tempMethod.getName (). indexof ("id")! } else if ((entity.getClass (). getImplename () + "id"). EqualSignoreCase (tempMethod.getName (). Substring (3))) {idMethod = tempMethod; }} // Der erste Buchstabe wird in Kleinbuchstaben SQL += IdMethod.getName (). Substring (3,4) .TolowerCase () +idMethod.getName (). Substring (4) +"=?" System.out.println (SQL); ST = Conn.Preparestatement (SQL); // Beurteilen Sie die Art der ID, wenn (Objektinstanz von Integer) {St.Setint (1, (Ganzzahl) Objekt); } else if (ObjectinstanceOf String) {St.SetString (1, (String) -Objekt); } rs = St.ExecuteQuery (); // den Zeiger auf die erste Zeile des Iterators iter = list.iterator () verweisen; // capsulate while (rs.Next ()) {while (iter.hasnext ()) {method method = iter.next (); if (method.getParameterTypes () [0] .GetSImplenName (). IndexOf ("String")! this.setString (Methode, Entity, rsGetString (method.getName (). Substring (3) .TolowerCase ())); } else if (method.getParameterTypes () [0] .GetSimpename (). IndexOf ("Datum")! } else {this.setint (Methode, Entity, rs.getInt (method.getName (). substring (3) .ToLowerCase ()); }}} jdbcutil.getClose (rs, st, conn); Rückgabeentität;}/*** FILTEN SIE ALLE Methodenobjekte mit eingehenden Zeichenfolgen in der aktuellen Pojo -Klasse und geben Sie die Listensammlung zurück. */private Liste <Methode> matchpojomethods (t Entity, String methodName) {// Alle aktuellen Pojo -Methoden -Objekte -Methoden erhalten [] methods = entity.getClass (). getDeclaredMethods (); // List Container speichert alle Methodenobjekte mit der Get -String -Liste <Methode> list = new ArrayList <Methode> (); // FILLEN SIE ALLE Methodenobjekte mit GET -Zeichenfolgen in der aktuellen Pojo -Klasse und speichern Sie sie im Listencontainer für (int index = 0; index <methods.length; index ++) {if (Methoden [index] .getName (). Indexof (methodName)! }} Rückgabeliste; } / ** * Wenn der Parametertyp String ist, setzen Sie die Parameter für das Feld Entity, entsprechend der Set * / public String setString (Methode Methode, t Entity, String Arg) Ausnahme {return (string) methode.invoke (Entity, New Object [] {arg}); } / ** * Wenn der Parametertyp Datum ist, setzen Sie die Parameter für das Feld Entity, das dem Set * / public date setDate (Methode Methode, t Entity, Datum Arg) entspricht, die Ausnahme aus {return (Datum) methode.invoke (Entity, New Object [] {arg}); } / ** * Wenn der Parametertyp ganzzahlig oder int ist, setzen Sie Parameter für das Entitätsfeld, das dem Set * / public Integer setInt (Methode Methode, t enttity, Integer arg) entspricht, Ausnahme {return (Integer) methode.invoke (Entity, New Object [] {arg}); }}Der oben von JDBC eingekapselte Artikel -basierte Assibilitätsbasis (Beispielcode) ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.