package com.wiseweb.core.dao;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired; @SuppressWarnings("unchecked")
public abstract class HibernateDAO <T, P extends Serializable> { @Autowired
private SessionFactory sessionFactory; /**
* 获取sessionFactory工厂
* @return
*/
protected SessionFactory getSessionFactory(){ return this.sessionFactory;
} /**
* 获取数据库session会话
* @return
*/
protected Session getSession(){ return this.sessionFactory != null ? this.sessionFactory.getCurrentSession() : null;
}
/**
* 保存数据库
* @param object
* @throws Exception
*/
public void save(T object) throws Exception{ if (getSession() != null) {
getSession().save(object);
}
}
/**
* 删除数据库
* @param object
* @throws Exception
*/
public void delete(T object) throws Exception{ if (getSession() != null) {
getSession().delete(object);
}
}
/**
* 更新数据库
* @param object
* @throws Exception
*/
public void update(T object) throws Exception{ if (getSession() != null) {
getSession().update(object);
}
}
/**
* 根据id查询
* @param tClass
* @param id
* @return
* @throws Exception
*/
public T get(Class<T> tClass, P id) throws Exception{ if (getSession() != null) {
return (T) getSession().get(tClass, id);
}
return null;
}
/**
* 根据sql语句做相应的查询
* @param hql
* @return
* @throws Exception
*/
public List<T> createQueryByHql(String hql) throws Exception{ List<T> list = new ArrayList<T>();
if (hql != null || !hql.equals("")) {
if (getSession() != null) {
list = getSession().createQuery(hql).list();
}
}
return list;
}
/**
* 分页查询
* @param hql
* @param pageNum
* @param pageSize
* @return
* @throws Exception
*/
public List<T> createQueryByHql(String hql, int pageNum, int pageSize) throws Exception{ List<T> list = new ArrayList<T>();
if (hql != null || !hql.equals("")) {
if (getSession() != null) {
Query query = getSession().createQuery(hql);
query.setFirstResult((pageNum - 1) * pageSize);
query.setMaxResults(pageSize);
list = query.list();
}
}
return list;
}
}

编写hibernateDao,使dao层都实现hibernateDao的更多相关文章

  1. 泛型理解及应用(二):使用泛型编写通用型Dao层

    相信目前所有的IT公司网站在设计WEB项目的时候都含有持久层,同样地使用过Hibernate的程序员都应该看过或者了解过Hibernate根据数据库反向生成持久层代码的模板.对于Hibernate生成 ...

  2. 轻量级DAO层实践初体验

    最近快被 Hibernate 给坑哭了,有了自己动手实现 ORM 映射 DAO 的冲动. 工作之余折腾了快一星期,总算是有点小成就. 现打算将过程记录下来,方便自己后续回顾填补遗漏. 1. 传统 JD ...

  3. 四、spring集成ibatis进行项目中dao层基类封装

    Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库 ...

  4. 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写

    我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...

  5. controller层负责创建类传递类给service;service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性;dao层负责数据的持久化

    controller层负责创建类传递类给service:service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性:dao层负责数据的持久化

  6. MyBatis Dao层的编写

    传统的dao层编写 以前编写dao层,先新建一个包com.chy.dao,再写接口StudentDao: public interface StudentDao { public void inser ...

  7. 深入理解--SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用

    SSM是sping+springMVC+mybatis集成的框架. MVC即model view controller. model层=entity层.存放我们的实体类,与数据库中的属性值基本保持一致 ...

  8. 从dao层查出的数据到页面时数值都是零的异常

    异常问题: IllegalArgumentException: argument type mismatch at cn.tedu.utils.BeanListHandler.handle(BeanL ...

  9. springboot 注册dao层 service 层

    可以使用三种注解来引入DAO层的接口到spring容器中.1.@Mapper,写在每一个DAO层接口上,如下: 2.@MapperScan和@ComponentScan两者之一.前者的意义是将指定包中 ...

随机推荐

  1. UI-基本控件的简单使用

    1.IBAction:   //====================== 1> 能保证方法可以连线 2> 相当于void 2.IBOutlet: 1> 能保证属性可以连线 3.常 ...

  2. 用JAMES实现自己的邮件服务器

    简介 James 是一个企业级的邮件服务器,它完全实现了smtp 和 pops 以及nntp 协议.同时,james服务器又是一个邮件应用程序平台.James的核心是Mailet API,而james ...

  3. PostgreSQL提升为主库 时间线加一的问题

    在使用PostgreSQL高可用集群过程中发现一个很难解决的问题,先记录在这里. 我们知道在PG流复制集群中,如果主库死掉了,备库要提升为主库有两种方法: 1)pg_ctl promote 2)创建对 ...

  4. 解决WIFI驱动RTL8188无法在rk3168平板Android4.2启动wifi的问题

    http://blog.csdn.net/morixinguan/article/details/75228335 上一篇博文能把ko编译出来,非常兴奋的想,这一定是没问题了,结果删除原先的ko后,加 ...

  5. EasyPlayerPro安卓流媒体播放器实现Android H.265硬解码流程

    本文转自EasyDarwin团队成员John的博客:http://blog.csdn.net/jyt0551/article/details/74502627 H.265编码算法作为新一代视频编码标准 ...

  6. EasyDarwin如何支持点播和RTMP/HLS直播?EasyDSS!

    2017年很长很长一段时间没有更新EasyDarwin开源项目了,虽然心里有很多EasyDarwin功能扩展的计划:比如同步录像.同步RTMP/HLS直播输出.拉模式转发优化.Onvif接入.GB28 ...

  7. C# http post上传文件

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  8. ubuntu 终端命令颜色的修改

    http://blog.chinaunix.net/uid-13954789-id-3137184.html http://blog.chinaunix.net/uid-26021340-id-348 ...

  9. HDU1575 Tr A

    解题思路:矩阵快速幂模板题,见代码: #include<cstdio> #include<cstring> #include<algorithm> using na ...

  10. 解决form嵌套

    自己的尝试功能实现了 但是项目中没有使用: 思路利用ajax:第一个form提交的时候触发第二个需要提交数据的ajax的请求url function checkform(type){ var issu ...