Java 封装del 封装反射操作

来源:互联网 发布:游戏开发java命令 编辑:程序博客网 时间:2024/06/06 09:25
-----------反射操作封装--------------package fozzz;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;/*** * in:对象实例 * out:对象变量个数,对象get方法值,对象变量,对象名 * @author fozzz * */public class MyReflect {    private Class<? extends Object> myClass;    private Object object;    private int length;    private Object[] resultArray;    private String[] memberArray;    private String className;    /**     *      * @param object     * @throws IllegalAccessException     * @throws IllegalArgumentException     * @throws InvocationTargetException     * @throws NoSuchMethodException     * @throws SecurityException     */    public MyReflect(Object object) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException,            NoSuchMethodException, SecurityException {        this.myClass = object.getClass();        this.object = object;        Field[] declaredFields = myClass.getDeclaredFields();        this.length = declaredFields.length;        this.memberArray = new String[length];        this.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("\\.");        this.className = split[split.length - 1];    }    /**     *      * @return 对象变量个数     */    public int getLength() {        return length;    }    /**     *      * @return 对象get方法值     */    public Object[] getResultArray() {        return resultArray;    }    /**     *      * @return 对象名     */    public String getClassName() {        return className;    }    /**     *      * @return 对象变量     */    public String[] getMemberArray() {        return memberArray;    }}
----------通过上面的类,得到拼装的sql-----------package fozzz;import java.lang.reflect.InvocationTargetException;public class MyDel {    private String className;    private String[] memberArray;    private Object[] resultArray;    public Object[] getResultArray() {        return resultArray;    }    public MyDel(Object object) {        // TODO Auto-generated constructor stub        try {            MyReflect myReflect = new MyReflect(object);            this.className = myReflect.getClassName();            this.memberArray = myReflect.getMemberArray();            this.resultArray = myReflect.getResultArray();        } 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();        }    }    public String getSql() {        // TODO Auto-generated method stub        String sql = "delete from " + className + " where " + memberArray[0] + "=?";        return sql;    }}
-----------连接数据库部分-------------package fozzz;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;public class Del {    private boolean ok = false;    public Del(Object object) {        MyDel myDel = new MyDel(object);        Connection connection = new MyConnection().getConnection();        String sql = myDel.getSql();        Object[] resultArray = myDel.getResultArray();        try {            PreparedStatement prepareStatement = connection.prepareStatement(sql);            prepareStatement.setObject(1, resultArray[0]);            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() {        // TODO Auto-generated method stub        return ok;    }}
0 0
原创粉丝点击