Recentemente, desenvolvi um exemplo de escrita sobre embalagens no meu tempo livre e depois resolvi os anteriores.
classe pública baseada na classe <t> {conexão conn; preparada estatemente sT; resultado rs rs; jdbcutil jdbcutil = new jdbcutil (); int resultado = 0; classe privada <t> persistentclass; @suppresswarnings ("não -checked") public baseado () {Conn = jdbCutil. (ParameterizedType) getClass (). GetGenericsuperclass (); persistentClass = (classe <T>) tipo.getActualTyPearguments () [0];} /** * Salvar * @Param Entity * @return * /public int (t entity )GexAssen (string sql = insert * insert * @return * /public int (t entity) +"("; List <odhod> list = this.matchpojomethods (entidade, "get"); iterator <odhod> iter = list.iterator (); object obj [] = new Object [list.size (); interi (INT i = 0; // Split Field Order insert em nome da tabela (nome, name, e -mail (iTer.HasHas. Method.getName (). Substring (3) .TolowerCase () + ","; sbf.format (métod.invoke (entidade, novo objeto [] {})); } else {obj [i] = métod.invoke (entidade, novo objeto [] {}); } i ++; } // Remova o último, símbolo Inserir inserção no nome da tabela (id, nome, email) valores (sql = sql.substring (0, sql.lastindexOf (","))+") valores ("; // montar sql pré -compilado STENTIONS INSERT no nome da tabela (nome, nome, email) (? {sql + = ","; tente {st = conn.preparestatement (sql); resultado;}/** * delete * @param objeto * @return * @throws sqLexception */public int DELETEID (objeto objeto) lança exceção {string sql = "excluir de" + persistentclass.getsimplename (). tolowercase () + "where"////use o construtor do subclass. Por exemplo, baseado em <t>, isto é, obtenha o tipo específico de T. entity = persistentclass.newInstance (); // O objeto de método que armazena a chave primária do POJO (ou a tabela que está sendo operada) Método IDMETHOD = NULL; List <Sodhod> list = this.matchpojomethods (entidade, "set"); Iterator <Sodhod> iter = list.iterator (); // filtre o objeto de método while (iter.hasnext ()) {método tempMethod = iter.Next (); if (tempmethod.getName (). indexof ("id")! = -1 && tempmethod.getName (). substring (3) .Length () == 2) {idmethod = tempmethod; } else if ((entity.getclass (). getSImplename () + "id"). Equalsignorecase (tempmethod.getName (). substring (3))) {idmethod = tempmethod; }} // A primeira letra é convertida em minúsculo sql += idmethod.getName (). Substring (3,4) .tolowercase () +idmethod.getName (). Substring (4) +"=?"; System.out.println (sql); st = Conn.Preparestatement (sql); // julgar o tipo de id if (objeto instância do número inteiro) {s.setInt (1, (inteiro) objeto); } else if (objeto instanceof string) {St.SetString (1, (string) objeto); } resultado = correto (rs, st, conn); resultado de retorno;}/** * modificar * @param entidade * @return * @throws excepção */public int update (t entity) lança excepção {string sql = "" + entity.getClass (). this.matchpojomethods (entidade, "get"); // carregando parâmetros objeto obj [] = novo objeto [list.size ()]; int i = 0; // objeto de método temporário, responsável por iterar o objeto do método da moda. Método tempmethod = null; // Como o ID não precisa ser modificado durante a modificação, a adição de parâmetros para a ordem deve mover o ID para o final. Método idMethod = null; Iterator <Sodhod> iter = list.iterator (); while (iter.hasnext ()) {tempmethod = iter.Next (); // Se o nome do método contiver uma sequência de identificação e o comprimento for 2, é considerado um ID. if (tempmethod.getName (). LastIndexOf ("id")! = -1 && tempmethod.getName (). substring (3) .Length () == 2) {obj [list.size () -1] = tempmethod.invoke (entidade, novo objeto [] {}); // salve o objeto do campo ID em uma variável e exclua -o no conjunto. idMethod = tempmethod; iter.remove (); // Se o nome do método for removido e o conjunto/get string for incompatível com pojo + "id" (insensível ao caso), é considerado um id} else if ((entity.getclass (). GetSplename () + "id"). tempmethod.invoke (entidade, novo objeto [] {}); idMethod = tempmethod; iter.remove (); }} // mova o ponteiro iterativo para a primeira posição iter = list.iterator (); while (iter.hasnext ()) {tempmethod = iter.Next (); sql + = tempmethod.getName (). Substring (3) .tolowerCase () + "=?,"; obj [i] = tempmethod.invoke (entidade, novo objeto [] {}); i ++; } // Remova o último, símbolo sql = sql.substring (0, sql.lastIndexOf (",")); // Adicionar condição sql + = "where" + idMethod.getName (). Substring (3) .tolowerCase () + "=?"; // O splicing SQL é concluído, imprima SQL Declaration System.out.println (SQL); st = Conn.Preparestatement (SQL); for (int j = 0; j <obj.length; j ++) {St.SetObject (j+1, obj [j]);} resultado = st.executeUpdate (); jdbcutil.getClose (rs, st, conn); Resultado de retorno;} public t findById (objeto objeto) lança exceção {string sql = "selecione * de" + persistentClass.getSimpleName (). ToLowerCase () + "onde"; // Use o construtor da subclasse para obter o tipo específico do tipo de parametrizado. Por exemplo, baseado em <t>, ou seja, obtenha o tipo específico de entidade t = persistentclass.newinstance (); // O objeto de método que armazena a chave primária do POJO (ou a tabela que está sendo operada) Método IDMETHOD = NULL; List <Sodhod> list = this.matchpojomethods (entidade, "set"); Iterator <Sodhod> iter = list.iterator (); // filtre o objeto de método while (iter.hasnext ()) {método tempMethod = iter.Next (); if (tempmethod.getName (). indexof ("id")! = -1 && tempmethod.getName (). substring (3) .Length () == 2) {idmethod = tempmethod; } else if ((entity.getclass (). getSImplename () + "id"). Equalsignorecase (tempmethod.getName (). substring (3))) {idmethod = tempmethod; }} // A primeira letra é convertida em minúsculo sql += idmethod.getName (). Substring (3,4) .tolowercase () +idmethod.getName (). Substring (4) +"=?"; System.out.println (sql); st = Conn.Preparestatement (sql); // julgar o tipo de id if (objeto instância do número inteiro) {s.setInt (1, (inteiro) objeto); } else if (objeto instanceof string) {St.SetString (1, (string) objeto); } rs = st.executeQuery (); // apontar o ponteiro para a primeira linha do iterador iter = list.iterator (); // encapsular while (rs.Next ()) {while (iter.hasNext ()) {método Method = iter.Next (); if (métod.getParameterTypes () [0] .getSimpleName (). nome. this.SetString (método, entidade, rs.getString (métod.getName (). Substring (3) .tolowerCase ())); } else if (method.getParameterTypes () [0] .getSimpleName (). IndexOf ("Date")! = -1) {this.setDate (método, entidade, rs.getDate (method.getName (). Substring (3) .tolowerCase ())); } else {this.setInt (método, entidade, rs.getInt (métod.getName (). substring (3) .tolowerCase ())); }}} jdbcutil.getClose (rs, st, conn); Entidade de retorno;}/*** Filtre todos os objetos do método com seqüências de strings de entrada na classe Pojo atual e retorne a coleção da lista. */Private List <Sodhod> MatchPojomethods (entidade t, string métodName) {// Obtenha todos os objetos do método POJO atuais métodos [] métodos = entity.getClass (). getDecLaredMethods (); // Listar contêiner armazena todos os objetos de método com a lista de strings <Método> list = new ArrayList <Sodhod> (); // Filtre todos os objetos do método com seqüências de caracteres na classe Pojo atual e armazenam -os no contêiner da lista para (int index = 0; index <methods.length; index ++) {if (métodos [index] .getName (). Indexof (MethodName)! = -1) {list.add (Methods [index]); }} Lista de retorno; } / ** * Quando o tipo de parâmetro é string, defina parâmetros para o campo da entidade, correspondendo ao set * / public String setString (método do método, entidade t, string arg) lança a exceção {return (string) método.invoke (entidade, novo objeto [] {arg}); } / ** * Quando o tipo de parâmetro é a data, defina parâmetros para o campo da entidade, correspondendo ao set * / public Date setDate (método do método, entidade t, date arg) lança a exceção {return (date) método.invoke (entidade, novo objeto [] {arg}); } / ** * Quando o tipo de parâmetro é inteiro ou int, defina parâmetros para o campo da entidade, correspondendo a definir * / public integer setInt (método do método, entidade t, inteiro arg) lança exceção {return (integer) método.inVoke (entidade, new Object [] {arg}); }}O artigo acima baseado em artigo (código de exemplo) encapsulado pelo JDBC é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.