Java 封装del 封装反射操作

-----------反射操作封装--------------
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;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值