...
/prepre package trade.axht.java.dao;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.dbutils.QueryRunner;import trade.axht.java.conn.JDBCUtils;import java.util.*;import java.lang.reflect.*;import java.sql.*;/** * *基
package trade.axht.java.dao;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.dbutils.QueryRunner;
import trade.axht.java.conn.JDBCUtils;
import java.util.*;
import java.lang.reflect.*;
import java.sql.*;
/**
*
*基类带泛型,派生类可以带泛型参数继承该类,通过反射对Beans对象操作
* @author Administrator
*
* @param
*/
public class DAO {//带泛型的基类,派生类可以带具体beans泛型参数继承该类
public Class clazz;
@SuppressWarnings({ "unchecked", "rawtypes" })
public DAO(){
System.out.println(getClass()); //打印class trade.axht.java.dao.userImpl.****DaoImpl
Type type=getClass().getGenericSuperclass();
System.out.println(type);
/**获取继承【该类(DAO)】带具体泛型的基类 或者获取此类的基类(Object),简单的讲就是谁继承Dao这个类后,在加载的时候,就会来加载这个构造函数。加载class的对象为Dao的派生类。派生类的基类就是Dao,并能获取基类带有的具体泛型。
JDK文档描述是这样的:返回表示此Class所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果超类是参数化类型,则返回的对象必须准确反映源///代码中所使用的实际类型参数。
所以最终打印为**/
ParameterizedType parameterizedType=(ParameterizedType)type;//ParameterizedType 表示参数化类型,如 Collection。
System.out.println(parameterizedType);
Type[] ars=parameterizedType.getActualTypeArguments();/**返回表示此类型实际类型参数的对象的数组。就是返回Collection中的泛型参数T,V类型的Type表示形式。Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。**/
System.out.println(ars);
clazz=(Class) ars[0];//获取泛型参数的第一个Class对象
System.out.println(clazz);
// System.out.println(clazz);
}
/**
* 增,删,改操作
* @param sql
* @param args
* @return
*/
public int executeUpdate(String sql,Object...args){
Connection connection=JDBCUtils.getConnection();
PreparedStatement preparedStatement=null;
try {
preparedStatement=connection.prepareStatement(sql);
if(args!=null&&args.length>0){
for(int i=0;i getForList(String sql, Object... args) {
List list = new ArrayList();
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
//1. 得到结果集
connection = JDBCUtils.getConnection();
preparedStatement = connection.prepareStatement(sql);
if(args!=null&&args.length>0){
for (int i = 0; i > values =
handleResultSetToMapList(resultSet);
//3.把List