如何通过反射机制编写一个实现表格数据增加的长尾方法?

2026-04-10 13:041阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计317个文字,预计阅读时间需要2分钟。

如何通过反射机制编写一个实现表格数据增加的长尾方法?

java数据库连接方法如下:try { Class.forName(oracle.jdbc.driver.OracleDriver);} catch (ClassNotFoundException e) { // TODO: Auto-generated catch block e.printStackTrace();}private static Connection getConnection() { try { Connection conn=DriverManager.getConnection(...); } catch (SQLException e) { e.printStackTrace(); }}

数据库的连接

{ try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private static Connection getConnection(){ try { Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","C##admin","123456"); return conn; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } private static void close(){ if(getConnection()!=null){ try { getConnection().close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 反射的自动生成sql语句

public static String getNoneInsertSql(Class c,List list){ StringBuffer sb=new StringBuffer(); sb.append("insert into "); sb.append(c.getSimpleName()); sb.append(" values("); for(String s: list){ sb.append("?"); sb.append(","); } sb.delete(sb.length()-1, sb.length()); sb.append(")"); return sb.toString(); } 实现增加和测试

public static int insertAllFactory(T t){ int i=1; Class c=t.getClass(); List list=new ArrayList (); for(Field f : c.getDeclaredFields()){ list.add(f.getName()); } String sql=getNoneInsertSql(c,list); try { PreparedStatement pstt=getConnection().prepareStatement(sql); for(String s : list){ for(Method me : c.getDeclaredMethods()){ if(me.getName().equalsIgnoreCase("get"+s)){ try { pstt.setObject(i, me.invoke(t, null)); i++; } catch (IllegalAccessException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } return pstt.executeUpdate(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ close(); } return 0; } public static void test(Users users){ if( insertAllFactory(users)>0){ System.out.println("成功"); }else{ System.out.println("失败"); } }

如何通过反射机制编写一个实现表格数据增加的长尾方法?

本文共计317个文字,预计阅读时间需要2分钟。

如何通过反射机制编写一个实现表格数据增加的长尾方法?

java数据库连接方法如下:try { Class.forName(oracle.jdbc.driver.OracleDriver);} catch (ClassNotFoundException e) { // TODO: Auto-generated catch block e.printStackTrace();}private static Connection getConnection() { try { Connection conn=DriverManager.getConnection(...); } catch (SQLException e) { e.printStackTrace(); }}

数据库的连接

{ try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private static Connection getConnection(){ try { Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","C##admin","123456"); return conn; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } private static void close(){ if(getConnection()!=null){ try { getConnection().close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 反射的自动生成sql语句

public static String getNoneInsertSql(Class c,List list){ StringBuffer sb=new StringBuffer(); sb.append("insert into "); sb.append(c.getSimpleName()); sb.append(" values("); for(String s: list){ sb.append("?"); sb.append(","); } sb.delete(sb.length()-1, sb.length()); sb.append(")"); return sb.toString(); } 实现增加和测试

public static int insertAllFactory(T t){ int i=1; Class c=t.getClass(); List list=new ArrayList (); for(Field f : c.getDeclaredFields()){ list.add(f.getName()); } String sql=getNoneInsertSql(c,list); try { PreparedStatement pstt=getConnection().prepareStatement(sql); for(String s : list){ for(Method me : c.getDeclaredMethods()){ if(me.getName().equalsIgnoreCase("get"+s)){ try { pstt.setObject(i, me.invoke(t, null)); i++; } catch (IllegalAccessException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } return pstt.executeUpdate(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ close(); } return 0; } public static void test(Users users){ if( insertAllFactory(users)>0){ System.out.println("成功"); }else{ System.out.println("失败"); } }

如何通过反射机制编写一个实现表格数据增加的长尾方法?