import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/***
* BaseDao 继承至HibernateDaoSuport类;
* @author wangxiuwei
*
*/
public class BaseDao extends HibernateDaoSupport {
/***
* 添加方法;
*/
public void add(Object obj){
super.getHibernateTemplate().save(obj);
}
/***
* 修改方法;
*/
public void update(Object obj){
super.getHibernateTemplate().update(obj);
}
/***
* 根据对象删除;
*/
public void deleteByObj(Object obj){
super.getHibernateTemplate().update(obj);
}
/***
* 根据主键删除;
* @param id
*/
public void deleteById(Class c,Serializable id){
this.deleteByObj(this.queryById(c, id));
}
/***
* 查询全部;
* @param c
* @return
*/
public List queryAll(Class c){
return super.getHibernateTemplate().find("from "+c.getName());
}
/***
* 按主键查询;
* @param c
* @return
*/
public Object queryById(Class c,Serializable id){
return super.getHibernateTemplate().load(c, id);
}
/***
* 按条件删除或者修改;
* @return
*/
public boolean updateOrDelete(String hql,Object...objects){
int result=super.getHibernateTemplate().bulkUpdate(hql, objects);
return result>0;
}
/***
* 保存或者更新;
* @param obj
*/
public void saveOrUpdate(Object obj){
super.getHibernateTemplate().saveOrUpdate(obj);
}
/***
* 分页查询;
* @return
*/
public List queryPage(final String hql,final Integer page,final Integer size,final Object...objects){
return super.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
Query query=session.createQuery(hql);
if(objects!=null){
for (int i=0;i<objects.length;i++) {
query.setParameter(i,objects[i]);
}
}
if(page!=null && size!=null){
query.setFirstResult((page-1)*size).setMaxResults(size);
}
return query.list();
}});
}
}
分享到:
相关推荐
Hibernate封装dao层
dao封装包
通过将公共通用操作写进父类简化代码,提高代码的复用。 面向接口 使用继承 泛型 引入JPA API查询 以及 元数据 提高代码的安全性.
自己封装的dao层,自我感觉很牛逼。可以下下来看看,提点优化建议
现如今各种大项目开发都离不开数据库,对数据库的操作变得平凡,对这些操作进行封装有利于项目开发方便。
Android 数据库操作简单封装
运用泛型+反射技术 实现hibenate 对DAO的封装,向外提供DAO模版,用户自定义的DAO 只需继承模版,就可实现CRUD,无需再写。
NULL 博文链接:https://zhaoshijie.iteye.com/blog/2003209
ifunsu封装基于springjdbc的dao层,具体用法请看本站博客http://blog.csdn.net/ifunsu 。
基于mongoDB3.0 和spring data1.5 整合的dao层封装
GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。
SpringMVC+Mybatis整合及dao、service强封装:一、SPringMVC与Mybatis框架整合,其中SpringMVC主要采用注解方式实现,Mybatis采用xml为主,对数据库开发、测试、部署环境进行分离配置;二、在封装上针对Mybatis进行...
用JDBC做一个简易的购物车。主要的实现功能有:1....2.进入购物界面,选择商品以及数量,...使用到的方法有Dao封装,数据库连接的封装,jq的事件绑定,session的各种方法等。 方便理解,JDBC小白的第一个简易购物车项目。
springMvc+Mybatis 最新版+Dao 层封装; 使用了 2016-07-28 maven 上下载的当前最新版本jar包 4.3.2 搭建的 springMVC + Mybatis +DAO 层封装..仅供参考学习...
S3H3 注解 DAO封装 自动创建表 在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准。它非常强大、灵活,而且具备了优异的性能。在本文中,我们将了解如何使用Java 5 注释来简化Hibernate代码,并...
NULL 博文链接:https://zfwdl2005.iteye.com/blog/1127462
这是通过Node.js对于MongoDB的操作DAO的封装的代码
该资源内容主要包含:两个版本常用mongoTemplate操作数据库集合语句的整理
使用Annotation并对DAO层封装具有分页功能的S2SH整合实例
封装jar包,包括验证、封装hibernate的templ、拼接hql和sql、分页封装方法