Java 封装update,Class使用
2016-08-26 20:16
155 查看
第一个元素为主键,为修改索引
将修改后的对象传入
将修改后的对象传入
------------test---------------- package fozzz; public class myTest { public static void main(String[] args) { // User user = new User(); // // user.setId(1); // // user.setName("name"); // // user.setPassword("pwd"); // // Update update=new Update(user); Student student = new Student(1, "王宝强", "马蓉", "经纪人", "爱绿"); Update update = new Update(student); boolean ok = update.isOk(); System.out.println(ok); } }
----------------连接工厂类--------------------- package fozzz; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MyConnection { public Connection getConnection() { Connection connection = null; try { connection = DriverManager.getConnection("jdbc:mysql://192.168.1.101/fozzz", "root", "root"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return connection; } }
-----------------连接数据库--------------------- package< c103 /span> fozzz; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class Update { private boolean ok = false; public Update(Object object) { myUpdate myUpdate = new myUpdate(object); Connection connection = new MyConnection().getConnection(); String sql = myUpdate.getSql(); int length = myUpdate.getLength(); Object[] resultArray = myUpdate.getResultArray(); try { PreparedStatement prepareStatement = connection.prepareStatement(sql); prepareStatement.setObject(length, resultArray[0]); for(int i=1;i<length;i++){ prepareStatement.setObject(i, resultArray[i]); } int executeUpdate = prepareStatement.executeUpdate(); if (executeUpdate > 0) { ok = true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public boolean isOk() { return ok; } }
-------------反射,得到sql语句,get方法结果------------------------ package fozzz; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; public class myUpdate { private Class<? extends Object> myClass; private Object object; private String[] memberArray;// 类变量 private Object[] resultArray;// get结果 private int length;// 变量个数 private String className; public myUpdate(Object object) { this.myClass = object.getClass(); this.object = object; try { myInit(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void myInit() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { // 成员变量 Field[] declaredFields = myClass.getDeclaredFields(); length = declaredFields.length; memberArray = new String[length]; resultArray = new Object[length]; for (int i = 0; i < length; i++) { String name = declaredFields[i].getName(); memberArray[i] = name; // 得到get方法的结果 resultArray[i] = myClass.getMethod("get" + (char) (name.charAt(0) - 32) + name.substring(1)).invoke(object); } String[] split = myClass.getName().split("\\."); className = split[split.length - 1]; } // 拼接sql语句 public String getSql() { String sql = "update " + className + " set " + memberArray[1]; for (int i = 2; i < length; i++) { sql += "=? ," + memberArray[i]; } sql += "=? where " + memberArray[0] + "=?"; return sql; } public Object[] getResultArray() { return resultArray; } public int getLength() { return length; } }
相关文章推荐
- Java中封装配置文件(1)-使用Properties (转)
- 反编译工具jad的使用(将*.class文件变成*.java文件,附带jad.zip包)
- 使用C++对java的classloader进行模拟
- Java中封装配置文件使用Properties
- 在JAVA中封装JSONUtils工具类及使用(一)
- Java中封装配置文件(1)-使用Properties
- 使用ASM对JAVA class file进行修改的技术 -- 添加类成员
- java j2me 使用M3G封装
- java中package的使用与classpath的设置
- ibatis中parameterClass="java.util.HashMap",使用多个参数
- Java中封装配置文件(1)-使用Properties
- 一个java处理JSON格式数据的通用类(封装了一个class)
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- 使用MySQL和Hibernate时,出现java.lang.UnsupportedOperationException: Update queries only supported through HQL异常的解决方法
- java开源框架集成常见错误之使用Criteria添加查询条件出现java.lang.ClassCastException异常
- 使用JBOSS发生java.lang.ClassCastException
- JAVA调用Tuxedo服务——使用JNI封装Tuxedo客户端的一个例子
- 反编译工具jad的使用(将*.class文件变成*.java文件,附带jad.zip包)[转]
- java.util 下的Class Collections的两种sort方法使用
- 当在程序中使用jasperreport加载模板时报class: groovy/runtime/metaclass/java/util/HashMapMetaClass, method: