定义一个DAO
public class DAO<T> {
private QueryRunner queryRunner = new QueryRunner();
private Class<T> clazz;
public DAO(){
Type superClass = getClass().getGenericSuperclass();
if(superClass instanceof ParameterizedType){
ParameterizedType parameterizedType = (ParameterizedType) superClass;
Type[] typeArgs = parameterizedType.getActualTypeArguments();
if(typeArgs != null && typeArgs.length>0){
if(typeArgs[0] instanceof Class){
clazz = (Class<T>) typeArgs[0];
}
}
}
}
/**
* 查询T 对应的List
* 返回对应的T 所对应的List
* @param sql
* @param args
* @return
*/
public List<T> getForList(String sql,Object...args){
Connection connection = null;
try {
connection = JdbcUtils.getConnection();
return queryRunner.query(connection, sql, new BeanListHandler<T>(clazz), args);
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtils.releaseConnection(connection);
}
return null;
}
}
定义一个接口CustomerDAO
public interface CustomerDAO {
public List<Customer> getForListWithCCustomer(CCustomer cc);
/**
* 返回一个list
* @return
*/
public List<Customer> getAll();
}
定义一个类
public class CCustomer {
private String name;
private String address;
private String phone;
public CCustomer(String name, String address, String phone) {
super();
this.name = name;
this.address = address;
this.phone = phone;
}
public String getName() {
//实现 名字 的模糊查询
if(name == null){
name ="%%";
}else{
name ="%"+ name +"%";
}
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
//实现 地址 的模糊查
if(address == null){
address ="%%";
}else{
address ="%"+ address +"%";
}
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
//实现 电话号码 的模糊查
if(phone == null){
phone ="%%";
}else{
phone ="%"+ phone +"%";
}
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
定义一个继承了DAO 且实现了CustomerDAO 的类
public class CustomerDAOJdbcImpl extends DAO<Customer> implements CustomerDAO{
@Override
public List<Customer> getForListWithCCustomer(CCustomer cc) {
String sql = "SELECT id,name,address,phone FROM customerss "
+ "WHERE name LIKE ? AND address LIKE ? AND phone LIKE ?";
return getForList(sql,cc.getName(),cc.getAddress(),cc.getPhone());
}
@Override
public List<Customer> getAll() {
String sql = "SELECT id,name,address,phone FROM customerss";
return getForList(sql);
}
}