Récemment, j'ai développé un exemple d'écriture sur l'emballage pendant mon temps libre, puis à trier les précédents.
Classe publique basé sur Basedao <T> {Connexion Conn; préparation à la stadé (ParameterisationType) getClass (). GetGerericsuperClass (); persistantClass = (class <t>) type.getActualTypearguments () [0];} / ** * Save * @param entité * @return * / public int save (t entité) lance l'exception {string sql = "insert-to" + entity.getClass (). + "("; List <méthode> list = this.matchPoJomeThods (entité, "get"); iterator <méthode> iter = list.iterator (); objet obj [] = nouvel objet [list.size ()]; int i = 0; // division insert de commande de champ dans le nom de la table (id, nom, e-mail, while (iter.hasnext ()) {méthode = iter.next (); Method.getName (). substring (3) .tolowercase () + ","; sbf.format (méthode.invoke (entité, nouvel objet [] {})); } else {obj [i] = méthode.invoke (entité, nouvel objet [] {}); } i ++; } // supprimer le dernier, insert symbole insert insert in table nom (id, nom, e-mail) valeurs (sql = sql.substring (0, sql.lastIndexof (",")) + ") valeurs ("; // assembler les valeurs de l'instruction SQL précompilée dans le nom de la table (id, nom, e-mail) (?,?,?, Pour (int j = 0; {SQL + = "?,";} // Supprimez la dernière instruction SQL, INSERT SYMBOLE dans le nom de la table (ID, Nom, Email) (?,?); System.out.println (sql); jdbcutil.getClose (rs, st, conn); Retour résultat;} / ** * delete * @param objet * @return * @throws sqlexception * / public int Deleteid (objet objet) lève exception {string sql = "delete de" + persistantClass.getSimplename (). Talenase () + "où"; type paramétré. Par exemple, Basedao <T>, c'est-à-dire obtenir le type spécifique de T. entité = persistantClass.NewInstance (); // L'objet de méthode qui stocke la clé primaire de la méthode POJO (ou le tableau en cours) idMethod = null; List <méthode> list = this.matchPoJomeThods (entité, "set"); Iterator <méthode> iter = list.iterator (); // Filtrez l'objet méthode while (iter.hasnext ()) {méthode tempmethod = iter.next (); if (tempmethod.getName (). indexof ("id")! = -1 && tempMethod.getName (). substring (3) .length () == 2) {idMethod = tempMethod; } else if ((entity.getClass (). getIMPLename () + "id"). equalSignoreCase (tempMethod.getName (). substring (3))) {idMethod = tempMethod; }} // La première lettre est convertie en minuscules sql + = idMethod.getName (). Substring (3,4) .tolowercase () + idMethod.getName (). Substring (4) + "=?"; System.out.println (SQL); ST = Conn.Preparestatement (SQL); // juge le type d'ID if (instance d'objet Of Integer) {St.SetInt (1, (entier) objet); } else if (objet instanceof string) {St.SetString (1, (String) objet); } result = St.ExecuteUpDate (); jdbcutil.getClose (Rs, ST, Conn); Retour Result;} / ** * Modify * @param Entity * @return * @throws exception * / public int update (t entity) exception {String sql = "update" + entity.getClass (). this.matchPoJomeThods (entité, "get"); // chargement des paramètres obj [] = nouvel objet [list.size ()]; int i = 0; // objet de méthode temporaire, responsable de l'itération de l'objet de méthode de mode. Méthode tempmethod = null; // Étant donné que l'ID ne doit pas être modifié lors de la modification, l'ajout de paramètres dans l'ordre doit déplacer l'ID à la fin. Méthode idMethod = null; Iterator <méthode> iter = list.iterator (); while (iter.hasnext ()) {tempMethod = iter.next (); // Si le nom de la méthode contient une chaîne d'ID et que la longueur est 2, elle est considérée comme un ID. if (tempmethod.getName (). LastIndexof ("id")! = -1 && tempMethod.getName (). substring (3) .length () == 2) {obj [list.size () - 1] = tempmethod.invoke (entité, nouveau objet [] {}); // Enregistrez l'objet du champ ID dans une variable et supprimez-le dans l'ensemble. idMethod = tempmethod; iter.remove (); Si le nom de la méthode est supprimé et que la chaîne set / get est incompatible avec PoJo + "ID" (cas insensible), il est considéré tempmethod.invoke (entité, nouvel objet [] {}); idMethod = tempmethod; iter.remove (); }} // déplacez le pointeur itératif vers la première position iter = list.iterator (); while (iter.hasnext ()) {tempMethod = iter.next (); sql + = tempmethod.getName (). substring (3) .tolowercase () + "=?,"; obj [i] = tempmethod.invoke (entité, nouvel objet [] {}); i ++; } // Supprime le dernier, symbole sql = sql.substring (0, sql.lastIndexof (",")); // Ajouter la condition sql + = "où" + idMethod.getName (). Substring (3) .tolowercase () + "=?"; // L'épissage SQL est terminé, imprimer SQL Instruction System.out.println (SQL); ST = Conn.PrepareStatement (SQL); pour (int j = 0; j <obj.length; j ++) {St.SetObject (j + 1, obj [j]);} result = St.ExecuteUpdate (); jdbcutil.getClose (Rs, St, Conn); Retour Résultat;} public t findById (objet objet) lance l'exception {String sql = "select * from" + persistantClass.getSimplename (). TolowerCase () + "où"; // utilise le constructeur de la sous-classe pour obtenir le type spécifique du type paramétré. Par exemple, Basedao <T>, c'est-à-dire obtenir le type spécifique de t entité = persistantClass.newinstance (); // L'objet de méthode qui stocke la clé primaire de la méthode POJO (ou le tableau en cours) idMethod = null; List <méthode> list = this.matchPoJomeThods (entité, "set"); Iterator <méthode> iter = list.iterator (); // Filtrez l'objet méthode while (iter.hasnext ()) {méthode tempmethod = iter.next (); if (tempmethod.getName (). indexof ("id")! = -1 && tempMethod.getName (). substring (3) .length () == 2) {idMethod = tempMethod; } else if ((entity.getClass (). getIMPLename () + "id"). equalSignoreCase (tempMethod.getName (). substring (3))) {idMethod = tempMethod; }} // La première lettre est convertie en minuscules sql + = idMethod.getName (). Substring (3,4) .tolowercase () + idMethod.getName (). Substring (4) + "=?"; System.out.println (SQL); ST = Conn.Preparestatement (SQL); // juge le type d'ID if (instance d'objet Of Integer) {St.SetInt (1, (entier) objet); } else if (objet instanceof string) {St.SetString (1, (String) objet); } rs = St.ExecuteQuery (); // pointer le pointeur vers la première ligne de l'Iterator iter = list.iterator (); // encapsule while (Rs.Next ()) {while (iter.hasnext ()) {méthode méthode = iter.next (); if (méthode.getParameterTypes () [0] .getSImPlenName (). Indexof ("String")! = -1) {// Parce que dans l'ensemble de liste, l'ordre de l'objet de méthode à récupérer est incompatible avec l'ordre de la base de données de la base de données. nom. this.SetString (méthode, entité, rs.getString (méthode.getName (). substring (3) .tolowerCase ())); } else if (method.getParAmEterTypes () [0] .getSimplename (). indexof ("date")! = -1) {this.setDate (méthode, entité, Rs.GetDate (méthode.getName (). substring (3) .tolowercase ())); } else {this.sentInt (méthode, entité, rs.getInt (méthode.getName (). substring (3) .tolowerCase ())); }}} jdbcutil.getClose (Rs, St, Conn); Entité de retour;} / ** * Filtrez tous les objets de la méthode avec des chaînes entrantes dans la classe POJO actuelle et renvoyez la collection de liste. * / Liste privée <méthode> MatchPoJomeThods (T Entity, String MethodName) {// Obtenez tous les objets de méthode POJO Méthode actuels [] Methods = Entity.getClass (). GetDeclaredMethods (); // List Container stocke tous les objets de la méthode avec Get String list <méthode> list = new ArrayList <Thethod> (); // Filtrez tous les objets de la méthode avec Get Strings dans la classe POJO actuelle et les stocker dans le conteneur de liste pour (int index = 0; index <méthodes.length; index ++) {if (méthodes [index] .getName (). Indexof (méthodyname)! = -1) {list.add (méthodes [index]); }} Retour List; } / ** * Lorsque le type de paramètre est une chaîne, définissez des paramètres pour le champ d'entité, correspondant à set * / public string setString (méthode méthode, t entity, string arg) lève exception {return (string) metheth.invoke (entité, nouveau objet [] {arg}); } / ** * Lorsque le type de paramètre est date, paramètres définis pour le champ d'entité, correspondant à Set * / public Date SetDate (méthode Method Method, T Entity, Date Arg) lève l'exception {return (date) method.invoke (entité, nouvel objet [] {arg}); } / ** * Lorsque le type de paramètre est entier ou int, paramètres de définition pour le champ d'entité, correspondant à Set * / public Integer setInt (méthode méthode, t entité, entier arg) lance l'exception {return (entier) méthode.invoke (entité, nouvel objet [] {arg}); }}L'article ci-dessus basé basé sur (exemple de code) encapsulé par JDBC est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.