springMVC项目中整合BaseDao
来源:互联网 发布:东莞天行健网络怎么样 编辑:程序博客网 时间:2024/06/04 18:08
在spring+hibernate项目中,都会涉及到对数据库的crud操作,为了减少重复代码,抽取了BaseDao接口,具体实现如下:
BaseDao.java接口
package dao;import java.util.List;public interface BaseDao<T> {// 增 void add(T t);// 删 void delete(T t);// 改 void update(T t);// 查所有 List<T> list();// 通过id查 T find(Integer id);}
BaseDaoImpl.java实现类
package dao.impl;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import dao.BaseDao;import entity.Customer;public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> { private Class aclass; //查询所有和根据id查询两个方法都需要具体的实体类,所以在构造方法中获取实际类型参数。 public BaseDaoImpl(){ Class clazz=this.getClass(); //获得运行类的父类的参数化类型BaseDaoImpl<Customer> ParameterizedType ptype=(ParameterizedType) clazz.getGenericSuperclass(); //获得参数化类型中的实际类型参数<Customer> Type types[] = ptype.getActualTypeArguments(); this.aclass=(Class) types[0]; } @Override public void add(T t) { this.getHibernateTemplate().save(t); } @Override public void delete(T t) { this.getHibernateTemplate().delete(t); } @Override public void update(T t) { this.getHibernateTemplate().update(t); } // 不能直接写成this.getHibernateTemplate().find("from T") @Override public List<T> list() { // TODO Auto-generated method stub return (List<T>) this.getHibernateTemplate().find("from "+aclass.getSimpleName()); } @Override public T find(Integer id) { // TODO Auto-generated method stub return (T) this.getHibernateTemplate().get(aclass, id); }}
CustomerDao接口,需要继承BaseDao接口,并传入实际类型参数Customer。
package dao;import java.util.List;import java.util.Map;import entity.Customer;import entity.PageBean;public interface CustomerDao extends BaseDao<Customer>{// void add(Customer customer);// List<Customer> list();// Customer find(Integer cid);// void update(Customer customer);// void delete(Customer customer);}
CustomerDaoImpl实现类,并需要继承BaseDaoImpl。
因为BaseDaoImpl中继承了HibernateDaoSupport,所以CustomerDaoImpl直接继承BaseDaoImpl即可。
package dao.impl;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.hibernate.Query;import org.hibernate.SQLQuery;import org.hibernate.Session;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.transform.AliasToBeanResultTransformer;import org.hibernate.transform.Transformers;import org.springframework.orm.hibernate5.HibernateTemplate;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import dao.CustomerDao;import entity.Customer;import entity.PageBean;public class CustomerDaoImpl extends BaseDaoImpl<Customer> implements CustomerDao {}
阅读全文
0 0
- springMVC项目中整合BaseDao
- 项目中三大框架整合的BaseDao接口及其实现
- SH整合的BaseDao
- 利用泛型封装BaseDao(项目中直接调用即可)
- SpringMVC-Mybatis-Maven项目整合
- Swagger与SpringMVC项目整合
- Swagger与SpringMVC项目整合
- spring,springmvc,mybatis项目整合
- Swagger与SpringMVC项目整合
- Swagger与SpringMVC项目整合
- Swagger与SpringMVC项目整合
- Swagger与SpringMVC项目整合
- Swagger与SpringMVC项目整合
- Swagger与SpringMVC项目整合
- Swagger与SpringMVC项目整合
- SpringMvc整合mongodb maven项目
- Swagger与SpringMVC项目整合
- Swagger与SpringMVC项目整合
- A616-HP-ProDesk 480 G2 MT电脑网络同传
- 主键、外键和索引
- MySQL—浅谈MySQL存储引擎
- 枚举-算法
- MySQL慢查询(二)
- springMVC项目中整合BaseDao
- 【干货】【通过特征可视化分析调整网络技巧】
- 文件操作(创建,打开,读取,关闭等)
- 【蓝桥杯】【杨辉三角】
- tensorflow 安装
- swiper 滑动图片垂直居中
- android 检查对象属性是否有一个为空
- vmware中Mac OS X10.9熟悉
- crond命令