SSH中公共Dao层、Dao接口
2017-11-22 00:00
183 查看
早做项目时候!为了优化代码可以创建公共类与接口
先写一个Dao层的公共接口,在里面实现增删改查等各种功能
public interface IBaseDao<T> {
//增加
public void save(T entity);
}
给一个泛型,因为这个接口要背以后写的Dao层接口继承,会有一个Class类
创建一个实现类,实现这个公共接口
@SuppressWarnings("unchecked")
public class BaseDaoImpl<T> implements IBaseDao<T>{
}
//创建方法获取到泛型的type和获得到Session对象
先写一个Dao层的公共接口,在里面实现增删改查等各种功能
public interface IBaseDao<T> {
//增加
public void save(T entity);
//删除 public void delete(Long id); //修改 public void update(T entity); //根据id查询 public T getById(Long id); //根据多个id查询 public List<T> getByIds(Long[] ids); //查询全部 public List<T> getAll();
}
给一个泛型,因为这个接口要背以后写的Dao层接口继承,会有一个Class类
创建一个实现类,实现这个公共接口
@SuppressWarnings("unchecked")
public class BaseDaoImpl<T> implements IBaseDao<T>{
@Autowired //注入SessionFactory private SessionFactory sessionFactory; //继承BaseDaoImpl的类的Class类 private Class<T> clazz; public BaseDaoImpl(){ //返回表示此Class所表示的实体(类、接口、基本类型或void)的直接超类的type //实际上就是父类的Class类 ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass(); //返回表示此类型实际类型参数的type对象的数组 //实际上获得的是父类的泛型类型 Type[] type = genericSuperclass.getActualTypeArguments(); clazz = (Class<T>) type[0]; } //获得session public Session getSession(){ return sessionFactory.getCurrentSession(); } public void save(T entity) { // TODO Auto-generated method stub getSession().save(entity); } public void delete(Long id) { // TODO Auto-generated method stub getSession().delete(getSession().get(clazz, id)); } public void update(T entity) { // TODO Auto-generated method stub getSession().update(entity); } public T getById(Long id) { // TODO Auto-generated method stub return (T) getSession().get(clazz, id); } public List<T> getByIds(Long[] ids) { // TODO Auto-generated method stub String hql = "from "+clazz.getSimpleName()+" where id in (:ids)"; Query query = getSession().createQuery(hql); query.setParameterList("ids", ids); return query.list(); } public List<T> getAll() { // TODO Auto-generated method stub String nameClass = clazz.getSimpleName();//获得泛型的名称 String sql = "from "+nameClass; return getSession().createQuery(sql).list(); }
}
//创建方法获取到泛型的type和获得到Session对象
相关文章推荐
- SSH中公共Dao层、Dao接口
- SSH向Dao接口的实现类中用注解和声明方式注入创建HibernateTemplate对象
- java项目公共接口GenericDao GenericDaoImpl
- SSH开发中公共接口和实现类
- dao接口实现公共类
- 关于SSH的Service层和Dao层的接口的讨论
- dao接口公共类
- 解决SSh中公共Dao使用泛型且Dao层无其他Dao,Service直接继承公共Dao,部署到tomcat可能会出现的错误。
- 利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件
- springmvc 创建公共接口对应服务端和客户端
- SSH整合 DAO注入sessionfactory的方式汇总
- asp.net 模拟CURL调用微信公共平台API 上传下载多媒体文件接口
- 一个简单的微信公共平台接口类
- 独家:SOA十大设计原则 公共接口与内部实现要有明确界限
- 自定义网络操作公共类 HttpUtil(接口回调机制)
- Dao接口实现基本的数据库操作。增删改查
- SSH---Spring减少配置量将公共的配置进行抽象
- 微信公共接口实现
- 基于mybatis 的公共dao
- Java的代理模式(通过公共接口实现)