泛型DAO模型设计
DAO接口:
1 import java.util.List; 2 3 import com.itheima.domain.Customer; 4 5 public interface CustomerDao extends Dao<Customer>{ 6 List<Customer> find(); 7 }
1 import java.io.Serializable; 2 3 public interface Dao<T> { 4 void add(T t); 5 void update(T t); 6 void delete(Serializable id);// String Integer 更加通用。联合主键 7 T findOne(Serializable id); 8 }
1 import com.itheima.domain.Order; 2 3 public interface OrderDao extends Dao<Order> { 4 5 }
1 import java.util.List; 2 3 import com.itheima.domain.Student; 4 5 public interface StudentDao extends Dao<Student>{ 6 List<Student> findPageRecords(int index,int size); 7 }
类
1 import java.io.Serializable; 2 3 import org.hibernate.Session; 4 5 import com.itheima.dao.Dao; 6 //借助Hibernate框架 7 public class BaseDao<T> implements Dao<T> { 8 private Session session;//核心类。Connection 9 //ORM:通过操作类,就相当于操作了数据库 10 //比如:操作Customer类,就相当于存取Customer表(Hibernate来做) 11 //操作Student类,就相当于存取Student表(Hibernate来做) 12 13 private Class clazz;//实体类型,目的就是让Hibernate知道从哪个表中查数据 14 public BaseDao(Class clazz){ 15 this.clazz = clazz; 16 } 17 18 public void add(T t) { 19 session.save(t); 20 } 21 22 public void update(T t) { 23 session.update(t); 24 } 25 26 public void delete(Serializable id) { 27 T t = findOne(id); 28 session.delete(t); 29 } 30 31 public T findOne(Serializable id) { 32 return (T)session.get(clazz, id);//第一个参数:操作的类的类型。第二个参数,主键 33 } 34 35 }
实现类
1 import java.util.List; 2 3 import com.itheima.dao.CustomerDao; 4 import com.itheima.domain.Customer; 5 6 public class CustomerDaoImpl extends BaseDao<Customer> implements CustomerDao { 7 8 public CustomerDaoImpl(){ 9 super(Customer.class); 10 } 11 12 public List<Customer> find() { 13 return null; 14 } 15 16 }
1 import java.io.Serializable; 2 3 import com.itheima.dao.OrderDao; 4 import com.itheima.domain.Order; 5 6 public class OrderDaoImpl extends BaseDao<Order> implements OrderDao { 7 public OrderDaoImpl(){ 8 super(Order.class); 9 } 10 }
1 import java.util.List; 2 3 import com.itheima.dao.StudentDao; 4 import com.itheima.domain.Student; 5 6 public class StudentDaoImpl extends BaseDao<Student> implements StudentDao { 7 public StudentDaoImpl(){ 8 super(Student.class); 9 } 10 public List<Student> findPageRecords(int index, int size) { 11 // TODO Auto-generated method stub 12 return null; 13 } 14 15 }
实体类
1 public class Order { 2 3 }
1 public class Student { 2 3 }
1 public class Customer { 2 3 }
自定义泛型及泛型的反射
合群是堕落的开始 优秀的开始是孤行