Live2d Test Env

泛型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 }
CustomerDao
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 }
Dao
1 import com.itheima.domain.Order;
2 
3 public interface OrderDao extends Dao<Order> {
4 
5 }
OrderDao
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 }
StudentDao

 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 }
BaseDao

实现类

 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 }
CustomerDaoImpl
 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 }
OrderDaoImpl
 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 }
StudentDaoImpl

实体类

1 public class Order {
2 
3 }
Order
1 public class Student {
2 
3 }
Student
1 public class Customer {
2 
3 }
Customer

 自定义泛型及泛型的反射

 

 

 

posted @ 2018-07-22 14:55  麦奇  阅读(183)  评论(0编辑  收藏  举报