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. 笨拙而诡异的 Oracle

    有这样一段 SQL 代码: 通过 C# 获取查询结果:    SQL 代码中有两个参数,且都是字符串类型,以上的 C# 代码是生成 Oracle SQL 代码所需要的参数.运行结果如下:   居然发生 ...

  2. Java——Spring配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  3. 在python中调用js或者nodejs

    在python中调用js或者nodejs要使用PyExecJs第三方包. pip install pyexecjs 示例代码 >>> import execjs >>&g ...

  4. Shell基本运算符

    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. 例如,两个数相加(注意使用 ...

  5. PHP 之微信小程序支付封装

    <?php /** * Created by PhpStorm. * User: yangs * Date: 2019/4/26 * Time: 14:28 */ class WeixinPay ...

  6. C语言中的DEBUG

    #cat aa.c #include <stdio.h> #include <stdarg.h> #include <stdlib.h> #include < ...

  7. c/c++排坑(4) -- c/c++中返回局部变量

    返回c语言中的局部变量 先看一段代码猜猜,打印值: #include <iostream> using namespace std; char * func(); int main() { ...

  8. python中enumerate( )函数的使用

    enumerate( )函数是遍历一个序列中的元素以及元素对应的下标 seq = ['one', 'two', 'three'] for i, element in enumerate(seq): p ...

  9. Django REST framework 初识

    一.官网快速实例 quickstart # 安装 RESTful pip install djangorestframework 二.序列化 models.py from django.db impo ...

  10. 基本数据类型:字符串(str)

    一.字符串的定义和创建 字符串是一个有序的字符的集合,用于存储和表示基本的文本信息,' '或'' ''或''' '''中间包含的内容称之为字符串,总之加了引号的字符都被认为是字符串! 创建: > ...