/**
* 增加entity
*
* @param Object对象
* @throws Exception
*/
public <T> void save(T ob) throws Exception {
this.getHibernateTemplate().save(ob);
}
/**
* 删除entity
*
* @param Object对象
* @throws Exception
*/
public <T> void delete(T ob) throws Exception {
this.getHibernateTemplate().delete(ob);
}
/**
* 删除entity:根据类,主键值获取entity,再进行删除
*
* @param entityClass
* @param idValue
* @throws Exception
*/
public <T> void delete(Class<T> entityClass, String idValue)
throws Exception {
T ob = (T) this.findById(entityClass, idValue);
this.getHibernateTemplate().delete(ob);
}
/**
* 批量删除:利用传入的参数拼写hql进行批量删除数据<br/>
* 注:仅适用于单主键entity
*
* @param entityClass
* 对应的entity类
* @param idName
* entity中的主键名称
* @param ids
* 主键值
* @throws Exception
*/
public <T> void deleteList(Class<T> entityClass, String idName,
List<String> ids) throws Exception {
Session session = null;
try {
String hql = "delete " + entityClass.getSimpleName() + " where "
+ idName + " in (";
if (ids == null || ids.size() <= 0) {
throw new Exception("batch delete id value is empty.");
}
for (int i = 0; ids != null && i < ids.size(); i++) {
if (i == ids.size() - 1) {
hql += "'" + ids.get(i) + "'";
} else {
hql += "'" + ids.get(i) + "',";
}
}
hql += ")";
session = this.getHibernateTemplate().getSessionFactory().openSession();
Query query = session.createQuery(hql);
query.executeUpdate();
} finally {
if (session != null)
session.close();
}
}
/**
* 修改entity
*
* @param Object对象
* @throws Exception
*/
public <T> void update(T ob) throws Exception {
this.getHibernateTemplate().update(ob);
}
/**
* Criteria查询全部entity
*
* @param class类
* @throws Exception
*/
public <T> List<T> findAll(Class<T> cs) throws Exception {
return this.getHibernateTemplate().loadAll(cs);
}
/**
* 根据HQL语句进行查询
*
* @param Hql语句
* @throws Exception
*/
@SuppressWarnings("unchecked")
public <T> List<T> findByHql(String hql) throws Exception {
return this.getHibernateTemplate().find(hql);
} /**
* 根据SQL语句进行查询
*
* @param Sql语句
* @throws Exception
*/
@SuppressWarnings("unchecked")
public <T> List<T> findBySql(String sql){
Session session = null;
try {
session = this.getHibernateTemplate().getSessionFactory().openSession();
Query query = session.createSQLQuery(sql);
return query.list();
} finally {
if (session != null)
session.close();
}
}
/**
* 根据id查询entity
*
* @param Class类
* @param value
* @return
*/
public <T> T findById(Class<T> cs, String value) {
return this.getHibernateTemplate().get(cs, value);
}
/**
* hql查询唯一值
*
* @param hql
* @return
*/
public Object findUniqueByHql(String hql){
Session session = null;
try {
session = this.getHibernateTemplate().getSessionFactory().openSession();
Query query = session.createQuery(hql);
return query.uniqueResult();
} finally {
if (session != null)
session.close();
}
} /**
* hql查询得到唯一的结果,如果参数requried错误hibernate将抛出类型强制转型错误
* @param <T>
* @param hql hql语句
* @param requried 返回值类型class
* @return 唯一的结果,如果没有返回null
*/
@SuppressWarnings("unchecked")
public <T> T findUniqueResult(String hql,Class<T> requried){
Session session = null;
session = this.getHibernateTemplate().getSessionFactory().getCurrentSession();
Query query = session.createQuery(hql);
Object retObj = query.uniqueResult();
if (retObj != null) {
return (T)retObj;
}
return null;
}

demo BaseDao随笔,hibernate框架的更多相关文章

  1. Hibernate框架入门

    导读 本文主要介绍hibernate的入门,主要包括以下内容:hibernate介绍.hibernate环境搭建.hibernate简单测试.测试涉及的api详解. 一.hibernate介绍 JDB ...

  2. 为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

    既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的 ...

  3. Android数据库hibernate框架

    说明 /** * YDL_Hibernate总结 <br/> * (一)支持功能: 1.自己主动建表,支持属性来自继承类:可依据注解自己主动完毕建表,而且对于继承类中的注解字段也支持自己主 ...

  4. Hibernate框架进阶(上篇)

    导读 前面一片文章介绍了Hibernate框架的入门,主要是讲解Hibernate的环境搭建和简单测试,有兴趣的童鞋出门左转.本文在入门的基础上进行Hibernate的进阶讲解,分为上中下三篇,本篇为 ...

  5. Hibernate框架进阶(中篇)之多表关系

    导读 Hibernate进阶主要分为上中下三篇,本文是中篇,主要讲解Hibernate框架中多表关系的实现.我们知道多表关系有一对一.一对多(多对一)和多对多三种关系.而1对1关系一般合并为一个表处理 ...

  6. 【SSH框架】系列之 Spring 整合 Hibernate 框架

    1.SSH 三大框架整合原理 Spring 与 Struts2 的整合就是将 Action 对象交给 Spring 容器来负责创建. Spring 与 Hibernate 的整合就是将 Session ...

  7. hibernate框架学习笔记6:事务

    MySQL的事务.JDBC事务操作: 详细见这篇文章:比较详细 http://www.cnblogs.com/xuyiqing/p/8430214.html 如何在hibernate中配置隔离级别: ...

  8. hibernate框架学习笔记3:API详解

    Configuration对象: package api; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configur ...

  9. hibernate框架学习笔记1:搭建与测试

    hibernate框架属于dao层,类似dbutils的作用,是一款ORM(对象关系映射)操作 使用hibernate框架好处是:操作数据库不需要写SQL语句,使用面向对象的方式完成 这里使用ecli ...

随机推荐

  1. UNP学习第九章 基本名字与地址转换

    之前都用数值地址来表示主机(206.6.226.33),用数值端口号来标识服务器. 然而,我们应该使用名字而不是数值:名字比较容易记,数值地址可以改变但名字保持不变. 随着往IPv6上转移,数值地址变 ...

  2. Spring MVC rest接收json中文格式数据显示乱码

    1.解决方法其中之一 在web.xml下添加配置: <!-- 编码配置 --> <filter> <filter-name>CharacterEncodingFil ...

  3. 【Windows、SVN】在Windows服务器下安装SVN,并在客户端能维护代码版本

    1.分别在客户端和服务器端安装软件 在网上搜索一下安装包的下载地址(这里暂不介绍) 得到2个安装文件 Server是装在服务器端的,另外一个装在客户端 2.安装SVN服务器端 基本一致下一步即可 特殊 ...

  4. System.exit(0)和System.exit(1)区别(转)

    转:http://www.cnblogs.com/xwdreamer/archive/2011/01/07/2297045.html 1.参考文献 http://hi.baidu.com/accpzh ...

  5. 修改Mysql数据库的字符集

    1.先检查数据库的默认字符集是否是引起不能存储中文的原因: 登录数据库后执行下面的命令 mysql> show variables like 'character%'; 由上图可以看出,data ...

  6. CentOS安装 netdata 实时监视 Linux 系统性能

    作为一个 Linux 系统的管理员,为了随时了解系统资源的占用情况,有必要使用专门的系统监视工具.如果你需要对 Linux 系统.应用程序.SNMP 设备进行实时的性能监视,那么 netdata 这个 ...

  7. Ettercap详细参数

    关于界面:ettercap提供 4 种运行界面: Text            #文本模式,参数 -T ,一般配合 -q(安静模式)使用 Curses/GTK         #图形模式,参数 -C ...

  8. jmeter 不同线程组之间传递变量2

    方法1  通过变量传递参数: 第一个脚本: HTTP Request_新建出差申请单_登录,关联出参数token.companyId.userId.userName 1.添加后置处理器:BeanShe ...

  9. Eureka 系列(07)服务注册与主动下线

    Eureka 系列(07)服务注册与主动下线 [TOC] Spring Cloud 系列目录 - Eureka 篇 在上一篇 Eureka 系列(05)消息广播 中对 Eureka 消息广播的源码进行 ...

  10. 给Laravel4添加中文语系(转)

    Laravel 4 官方不附带英文以外的 validataion 错误信息翻译. 今天发现GitHub 上有一个 repository 收集不同的翻译,大家可以下载需要的翻译. GitHub项目地址: ...