HibernateBaseDAO接口
 package com.iotek.homework.dao;

 import java.io.Serializable;
import java.util.List; /**
* Created by Bo on 2017/4/9.
*/
public interface HibernateBaseDAO<T> { //添加
void doCreate(T entity) throws Exception; //删除
void doDelete(T entity) throws Exception; //修改
void doUpdate(T entity) throws Exception; //查询
List<T> doFind(String hql, Object...param) throws Exception; //根据主键ID查询
T doFindById(Class<T> tClass, Serializable id) throws Exception; //分页查询
List<T> queryPage(String hql, final int START_INDEX, final int PAGE_SIZE, Object...param) throws Exception; //用于分页查询的总行数
List<Long> queryTotalRows(String hql, Object...param) throws Exception;
}
HibernateBaseDAOImpl实现类
 package com.iotek.homework.dao;

 import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateCallback;
import org.springframework.orm.hibernate4.HibernateTemplate; import java.io.Serializable;
import java.util.List; /**
* Created by Bo on 2017/4/9.
*/
public class HibernateBaseDAOImpl<T> implements HibernateBaseDAO<T> { @Autowired
private HibernateTemplate hibernateTemplate; @Override
public void doCreate(T entity) throws Exception {
hibernateTemplate.save(entity);
} @Override
public void doDelete(T entity) throws Exception {
hibernateTemplate.delete(entity);
} @Override
public void doUpdate(T entity) throws Exception {
hibernateTemplate.update(entity);
} @Override
public List<T> doFind(String hql, Object... param) throws Exception {
return (List<T>) hibernateTemplate.find(hql,param);
} @Override
public T doFindById(Class<T> tClass, Serializable id) throws Exception {
return hibernateTemplate.get(tClass, id);
} @Override
public List<T> queryPage(String hql, int START_INDEX, int PAGE_SIZE, Object... param) throws Exception {
return hibernateTemplate.execute(new HibernateCallback<List<T>>() {
@Override
public List<T> doInHibernate(Session session) throws HibernateException {
Query query = session.createQuery(hql);
if(param != null){
for(int i = 0 ; i < param.length ; i ++){
query.setParameter(i, param[i]);
}
}
query.setFirstResult(START_INDEX);
query.setMaxResults(PAGE_SIZE);
return query.list();
}
});
} @Override
public List<Long> queryTotalRows(String hql, Object...param) throws Exception {
return (List<Long>) hibernateTemplate.find(hql,param);
}
}

继承使用

public interface UserDAO extends HibernateBaseDAO<User>{}

public class UserDAOImpl extends HibernateBaseDAOImpl<User> implements UserDAO{}

HibernateBaseDAO的更多相关文章

  1. springboot+druid

    最近项目需要搭建新工程,打算使用微服务的形式搭建便于后期拓展.看了一圈发现springboot易于搭建,配置简单,强化注解功能,"just run". Spring Boot ma ...

  2. Java泛型 T.class的获取

    public interface BaseDao<T> { T get(String id); } import java.lang.reflect.ParameterizedType; ...

  3. java 反射 子类泛型的class

    很早之前写过利用泛型和反射机制抽象DAO ,对其中获取子类泛型的class一直不是很理解.关键的地方是HibernateBaseDao的构造方法中的 Type genType = getClass() ...

  4. JEECMS站群管理系统-- 自定义标签及使用自己创建的表的实现过程

    下面是我自己定义的标签mycontent_list 首先,在数据库里创建了一个jc_mycontent的表,其中有id,title,content三个字段 其次,创建了一个实体类 public cla ...

  5. jeecms v9开发资料

    开发文档 . 系统架构概述 本系统核心架构为 FreeMarker+hibernate+Spirng 的 mvc 分层架构. 1.1 分层架构模型 img 1.2 数据流转模型 (前端) img . ...

  6. JEECMS 自定义标签

    CMS 是”Content Management System” 的缩写,意为” 内容管理系统”. 内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场.对于内容管理,业界还没有一个统 ...

  7. jeecms 代码生成 Tools

    本文作者: IIsKei 本文链接: http://www.iskei.cn/posts/50510.html 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议 ...

  8. 原 jeecms9自定义标签以及使用新创建的数据库表

    转载地址:https://blog.csdn.net/nice_meng/article/details/89179089 本系统使用的是jeecmsv9版本,收集网上知识后,进行个人汇总 首先,自己 ...

  9. jeecms9自定义标签以及使用新创建的数据库表

    转载 https://blog.csdn.net/nice_meng/article/details/89179089 本系统使用的是jeecmsv9版本,收集网上知识后,进行个人汇总 首先,自己创建 ...

随机推荐

  1. 检查阿里云ssl证书到期情况

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-06-10 16:00 # @Author : Anthony.long # ...

  2. 解决:efi usb device has been blocked by the current security policy

    解决:efi usb device has been blocked by the current security policy 问题描述:U盘装系统或者其他操作时,是因为BIOS安全策略,出现上述 ...

  3. linux 安装 mongo

    整个安装过程:下载安装包--> 解压,添加系统路径(是滴,不用安装解压即可) --> 创建数据目录 --> 启动mongod服务 --> 运行mongo 1.下载安装包 Mon ...

  4. Sping装配之——自动装配

    Sping从两个角度来实现自动化装配: 组件扫描(component scaning):spring会自动发现应用上下文中所创建的bean; 自动装配(autowiring):spring自动满足be ...

  5. python tips:描述符descriptor

    描述符(descriptor)是实现了__get__.__set__.__del__方法的类,进一步可以细分为两类: 数据描述符:实现了__get__和__set__ 非数据描述符:没有实现__set ...

  6. cv的期刊和会议

    http://blog.csdn.net/tmylzq187/article/details/51111421

  7. Mapreduce代码疑点(1)

    一.Hadoop MultipleInputs.addInputPath 读取多个路径 https://blog.csdn.net/t1dmzks/article/details/76473905 M ...

  8. Django - 模版语言循环字典

    1.可以对传入字典参数做循环显示 views.py中代码: urls.py中代码: html中代码: 在模版语言中,可以对字典进行类似python中的操作(keys,values,items),需要注 ...

  9. Perl Connect to Database without password as sysdba

    #!/oracle/product/11g/db/perl/bin/perl use lib '/oracle/product/11g/db/perl/lib/site_perl/5.10.0'; u ...

  10. Vi/Vim基本用法

    Vi/Vim是Linux中一款功能强大的编辑器,vi是Visual Interface的缩写,即可视化接口,vim是vi iMprove的缩写,即 vi的增强版(具有语法着色功能).它在Linux上的 ...