/**
* 增加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. 在windows下使用secure crt传文件到linux的主目录下

    SECURT CRT上传文件 使用secure crt连接到Linux上 通过alt+p打开sftp服务 使用put D:\视觉\代码\ch.10.zip 即可传输完成 进入linux直接在主目录下可 ...

  2. openwrt 编译支持sqlite3

    编译版本加载lib库 ------------------------------Libraries----------------------------------- Filesystem  -- ...

  3. beautifhulsoup4的使用

    Beautiful: - 基本使用 from bs4 import BeautifulSoup   - 解析器:       lxml, html.parser​   soup = Beautiful ...

  4. 2018icpc南京/gym101981 G Pyramid 找规律

    题意: 数一个金字塔里面有多少个正三角形. 题解: ans[n]=n*(n-1)*(n-2)*(n-3)/24 #include<bits/stdc++.h> using namespac ...

  5. 2019牛客第八场多校 E_Explorer 可撤销并查集(栈)+线段树

    目录 题意: 分析: @(2019牛客暑期多校训练营(第八场)E_Explorer) 题意: 链接 题目类似:CF366D,Gym101652T 本题给你\(n(100000)\)个点\(m(1000 ...

  6. python re模块常用的正则表达式

    '.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r&qu ...

  7. 如何将Vue项目部署到Nginx 服务器中

    https://blog.csdn.net/qq_35366269/article/details/91385689

  8. 用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)

    目录 目录 前文列表 扩展阅读 前期准备 多对多 使用样例 一直在使用的 session 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask 来写个轻博客 (2) - Hel ...

  9. ubuntu php多版本共存切换

    做开发时,由于本机开发的php版本跟线上发布的php版本不一致,很容易在上线后,发现因版本的影响导致一些bug,但又不想重新去换本机的php版本,那么多版本共存就很方便了!有必要时,切换到指定版本测试 ...

  10. QT5.2 Assistant-设置应用程序图标

       在Qt助手(assistant.exe)搜索关键字"Setting the Application Icon"就可以看到在各种平台设置Qt程序图标的方法,包括QT支持的Win ...