/**
* 增加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. docker 运行jenkins及vue项目与springboot项目(一.安装docker)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  2. Ubuntu备份与恢复

    在使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工具(通常都是私有软件),然后重启电脑进入备份工具提供的软 ...

  3. 这样才能正确解锁MaxCompute客户端

    大数据计算服务(MaxCompute,原名ODPS)是一种快速.完全托管的TB/PB级数据仓库解决方案.MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决 ...

  4. TCP练习

    然后基本的socket编程,用TCP做两个进程互相发消息.C端主动发hello,S端收到后回world. #include <stdio.h> #include <stdlib.h& ...

  5. mysql学习-explain

    表头包含有: id---select_type---table---type---possible_keys---key---key_len---ref---rows---Extra id:selec ...

  6. jq实现跟随鼠标点击移动的下划线效果

    效果如下: 1.html代码: <div class="center-left-tap"> <a href="javascript:void (0)&q ...

  7. 52、saleforce 第一篇

    View the Schema 1.点击setup 2.在QuickFind and Search中输入Schema Builder 先点击clear all 去除所有现实的UML,然后选择Line_ ...

  8. 【git】如何ignore一个文件的更改又保留其初始版本

    参考: https://compiledsuccessfully.dev/git-skip-worktree/ https://stackoverflow.com/questions/9794931/ ...

  9. Leetcode代码复盘_分治法相关

    分治法 1.二分搜索(算法时间复杂度O(log n)) 输出:如果x=A[j],则输出j,否则输出0. 1.binarysearch(1,n) 过程:binarysearch(low,high) 1. ...

  10. layui点击图片放大-多图显示

    layui点击图片放大-多图显示 标签(空格分隔): js HTML // div <div id="photo-list"> <img class=" ...