一、目录的工程结构
二、模型设计
三、核心代码的实现
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; }}
原标题:Dao设计模型
关键词: