使用DBUtils编写通用的DAO

来源:互联网 发布:哪家的4g网络好 编辑:程序博客网 时间:2024/05/18 00:47

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> {

根据业务编写自己的方法
}



接口--类--自定义类关系




0 0
原创粉丝点击