public class JdbcDaoImpl<T> implements DAO<T>
public class CustomerDao extends JdbcDaoImpl<Customer>
第一步:interface DAO:
package com.atguigu.getconntection;
import java.sql.Connection;
import java.util.List;
/*
* 访问数据的DAO接口
* 里面定义好访问数据表的各种方法
* @param T:DAO处理的实体类的类型
*/
public interface DAO<T> {
/**
* 批量处理的方法
* @param connection
* @param sql
* @param args
*/
void batch(Connection connection,String sql,Object ... args);
/**
/**
* 返回一个具体的值,例如总人数,平均工资,某一个人的eamil
* @param connection
* @param sql
* @param args
* @return
*/
<E> E getForValue(Connection connection,String sql,Object ... args);
/**
* 返回T的一个集合
* @param connection
* @param sql
* @param args
* @return
*/
List<T> getForList(Connection connection,String sql,Object ... args);
/**
* 返回一个T的对象
* @param connection
* @param sql
* @param args
* @return
* @throws Exception
*/
T get(Connection connection,String sql,Object ... args) throws Exception;
/**
* insert、update、delete
*
* @param connection:数据库连接
* @param sql:SQL语句
* @param args:填充占位符的可变参数
*
*/
void update(Connection connection,String sql,Object ... args);
}
第二步:class JdbcDaoImpl<T> implements DAO<T>:
package com.atguigu.getconntection;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
/**
* 使用QueryRunner 提供其机体的实现
* @author Administrator
*
* @param <T>:子列需传入的反省类型
*/
public class JdbcDaoImpl<T> implements DAO<T> {
private QueryRunner queryRunner=null;
private Class<T>type;
public JdbcDaoImpl(){
queryRunner=new QueryRunner();
type=ReflectionUtils.getSuperGenericType(getClass());
}
@Override
public void batch(Connection connection, String sql, Object... args) {
// TODO Auto-generated method stub
}
@Override
public <E> E getForValue(Connection connection, String sql, Object... args) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<T> getForList(Connection connection, String sql, Object... args) {
// TODO Auto-generated method stub
return null;
}
@Override
public T get(Connection connection, String sql, Object... args) throws Exception {
return queryRunner
.query(connection, sql, new BeanHandler<>(type), args);
}
@Override
public void update(Connection connection, String sql, Object... args) {
// TODO Auto-generated method stub
}
}
第三步:
package com.atguigu.getconntection;
public class CustomerDao extends JdbcDaoImpl<Customer> {
根据业务编写自己的方法
}
接口--类--自定义类关系