你的位置:首页 > Java教程

[Java教程]Dao设计模型

一、目录的工程结构

  

二、模型设计

  

 

三、核心代码的实现

  1、实体类

package com.lyh.domain;public class Book {  private String id;  private String name;  private float price;  public String getId() {    return id;  }  public void setId(String id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  public float getPrice() {    return price;  }  public void setPrice(float price) {    this.price = price;  }}package com.lyh.domain;public class Customer {  private Integer id;  private String name;  public Integer getId() {    return id;  }  public void setId(Integer id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }}

  2、Dao设计

最顶层Dao.javapackage com.lyh.dao;import java.io.Serializable;public interface Dao<T> {  void add(T t);  void update(T t);  void delete(Serializable id);  T findOne(Serializable id);}//BookDao.javapackage com.lyh.dao;import com.lyh.domain.Book;public interface BookDao extends Dao<Book>{  }//CustomerDao.java package com.lyh.dao;import java.util.List;import com.lyh.domain.Customer;public interface CustomerDao extends Dao<Customer>{    List<Customer> findCustomers(int startIndex,int offset);}

  3、具体Dao的实现类

  

Dao实现类BaseDao.javapackage com.itheima.dao.impl;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import org.hibernate.Session;import org.hibernate.Transaction;import com.itheima.dao.Dao;import com.itheima.util.HibernateUtil;public abstract class BaseDao<T> implements Dao<T> {    private Class clazz;  public BaseDao() {    //知道子类到底操作的是什么类型的javabean。即给clazz赋值    Type type = this.getClass().getGenericSuperclass(); //new BookDaoImpl() 得到 BaseDao<Book> 参数化的泛型类    ParameterizedType ptype = (ParameterizedType)type;  // 强转成 BaseDao<Book>    Type types[] = ptype.getActualTypeArguments();    clazz = (Class) types[0];    System.out.println(clazz);  }    @Override  public void add(T t) {    Session session = HibernateUtil.getSession();    Transaction tx = session.beginTransaction();    session.save(t);    tx.commit();    session.close();      }  @Override  public void update(T t) {    Session session = HibernateUtil.getSession();    Transaction tx = session.beginTransaction();    session.update(t);    tx.commit();    session.close();  }  @Override  public void delete(Serializable id) {    Session session = HibernateUtil.getSession();    T bean = findOne(id);    Transaction tx = session.beginTransaction();    session.delete(bean);    tx.commit();    session.close();  }  @Override  public T findOne(Serializable id) {    Session session = HibernateUtil.getSession();    return (T) session.get(clazz, id);  }}//BookDaoImpl package com.lyh.dao.impl;import com.lyh.dao.BookDao;import com.lyh.domain.Book;public class BookDaoImpl extends BaseDao<Book> implements BookDao {  }//CustomerDaoImpl.javapackage com.lyh.dao.impl;import java.util.List;import com.lyh.dao.CustomerDao;import com.lyh.domain.Customer;public class CustomerDaoImpl extends BaseDao<Customer> implements CustomerDao {  //  public CustomerDaoImpl(){//    super(Customer.class);//  }    public List<Customer> findCustomers(int startIndex, int offset) {      return null;  }}