泛型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(); } }