泛型DAO标准:
在公司里面,用的基本上都是泛型DAO,实现了代码的重用性。(需要认真体会,总结)
目录结构如下:
package dao;
import java.io.Serializable;
import java.util.List;
public interface IGenericDAO<ID extends Serializable,T> {
void insert(T entity) ;
void delete(ID id) ;
void deleteAll() ;
void update(T entity) ;
T load(ID id) ;
List<T> list() ;
Page<T> page(int currentPage,int pageSize,String sql);
}
package dao.impl;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import dao.IGenericDAO;
import dao.Page;
public abstract class GenericDAOImpl<T> implements IGenericDAO<Integer, T> {
private Class<?> clazz=null;
public GenericDAOImpl() {
ParameterizedType ptype=(ParameterizedType)(this.getClass().getGenericSuperclass());
clazz=(Class<?>)(ptype.getActualTypeArguments()[0]);
System.out.println(clazz);
}
@Override
public void insert(T entity) {
}
@Override
public void delete(Integer id) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll() {
// TODO Auto-generated method stub
}
@Override
public void update(T entity) {
// TODO Auto-generated method stub
}
@Override
public T load(Integer id) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<T> list() {
// TODO Auto-generated method stub
return null;
}
@Override
public Page<T> page(int currentPage, int pageSize, String sql) {
// TODO Auto-generated method stub
return null;
}
}
package dao;
import entity.User;
public interface IUserDAO extends IGenericDAO<Integer, User>{
User login();
}
package dao.impl;
import dao.IUserDAO;
import entity.User;
public class UserDAOImpl extends GenericDAOImpl<User> implements IUserDAO {
@Override
public User login() {
// TODO Auto-generated method stub
return null;
}
}
package dao;
public class Page<T> {
}
package entity;
import java.io.Serializable;
public class User implements Serializable {
}
package test;
import dao.IUserDAO;
import dao.impl.UserDAOImpl;
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
IUserDAO udao=new UserDAOImpl();
udao.login();
}
}