编写hibernateDao,使dao层都实现hibernateDao
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的更多相关文章
- 泛型理解及应用(二):使用泛型编写通用型Dao层
相信目前所有的IT公司网站在设计WEB项目的时候都含有持久层,同样地使用过Hibernate的程序员都应该看过或者了解过Hibernate根据数据库反向生成持久层代码的模板.对于Hibernate生成 ...
- 轻量级DAO层实践初体验
最近快被 Hibernate 给坑哭了,有了自己动手实现 ORM 映射 DAO 的冲动. 工作之余折腾了快一星期,总算是有点小成就. 现打算将过程记录下来,方便自己后续回顾填补遗漏. 1. 传统 JD ...
- 四、spring集成ibatis进行项目中dao层基类封装
Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库 ...
- 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写
我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...
- controller层负责创建类传递类给service;service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性;dao层负责数据的持久化
controller层负责创建类传递类给service:service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性:dao层负责数据的持久化
- MyBatis Dao层的编写
传统的dao层编写 以前编写dao层,先新建一个包com.chy.dao,再写接口StudentDao: public interface StudentDao { public void inser ...
- 深入理解--SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用
SSM是sping+springMVC+mybatis集成的框架. MVC即model view controller. model层=entity层.存放我们的实体类,与数据库中的属性值基本保持一致 ...
- 从dao层查出的数据到页面时数值都是零的异常
异常问题: IllegalArgumentException: argument type mismatch at cn.tedu.utils.BeanListHandler.handle(BeanL ...
- springboot 注册dao层 service 层
可以使用三种注解来引入DAO层的接口到spring容器中.1.@Mapper,写在每一个DAO层接口上,如下: 2.@MapperScan和@ComponentScan两者之一.前者的意义是将指定包中 ...
随机推荐
- PHP工作笔记:Yii2框架设置页面的关键词和描述
因为都是做系统,很少用到这个设置,标题也是自动生成的,我们公司网站也没有关键词和描述,这样不利于网站获取相关排名. 设置方式: 直接在视图层做如下设置 $this->title = " ...
- kmplayer加速播放视频(转)
转自微博:http://blog.sina.com.cn/shaguazhu1213 KMPlayer控制播放速度的快捷方式 (2011-11-12 10:51:56) 标签: 杂谈 分类: 编程之旅 ...
- Java并发编程之CountDownLatch,CyclicBarrier实现一组线程相互等待、唤醒
java多线程应用场景不少,有时自己编写代码又不太容易实现,好在concurrent包提供了不少实现类,还有google的guava包更是提供了一些最佳实践,这让我们在面对一些多线程的场景时,有了不少 ...
- Android 开发技术选型(博客,新闻,阅读类)
前言 最开始学习写应用的时候,发现类聚合数据这个平台可以提供一些免费数据接口,于是写了个人的第一个应用-– JuheNews,当时的知识储备稍显粗糙,虽然现在的知识也不咋滴,但是相对之前而言还是有些进 ...
- ubuntu安装 tensorflow GPU
安装支持GPU的tensorflow前提是正确安装好了 CUDA 和 cuDNN. CUDA 和 cuDNN的安装见 Nvidia 官网和各种安装教程,应该很容易,重点是要选准了支持自己GPU的 CU ...
- Swift 发送邮件和发短信
// MARK: - Action // MARK: compose mail 发送邮件 @IBAction func composeMail(sender: AnyObject) { // 判断能否 ...
- go语言】Goroutines 并发模式
并发模式 让我们先来回顾一下boring函数的例子. func boring(msg string, c chan string) { for i := 0; ; i++ { c ...
- Vue之拦截与响应拦截
vue中有一个拦截方法,当我们发起请求或者请求回来的时候,我们需要做一定的数据过滤或者拦截 下面是在开发项目时进行的一个axios的请求封装: 拦截器:就是我们在请求之前进行的一个操作比如说,我们可以 ...
- 【javascript 】组合式继承
开发人员采用的js的继承结构 function inheritPrototype(subType, superType) { var prototype = object(superType.prot ...
- Docker部署IPython
本文的部署环境是Ubuntu 14.04 Docker Docker 详细概念可以去search,简单来说就是把应用打包到一个容器里的轻量级系统虚拟化服务 IPython Notebook IPyth ...