自己学习的时候,顺手写的。主要为了减少重复操作!感觉还是可以的!

package com.hr.utils;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class HibenateUtil {// 获取配置文件private static Configuration cfg;private static ThreadLocal<Session> tl = new ThreadLocal<Session>();// Session工厂private static SessionFactory factory;static {// 读取配置文件信息cfg = new Configuration().configure();// 构建会话工厂,根据会话工厂创建sessionfactory = cfg.buildSessionFactory();}// 获得Sessionpublic static Session getSession() {// 返回一个根据会话工厂创建的sessionSession session = tl.get();if (session == null) {session = factory.openSession();tl.set(session);}return session;}// 关闭sessionpublic static void close(Session session) {session = tl.get();// 在session值不等于空且session值存在的情况下,关闭sessionif (session != null && session.isOpen()) {session.close();tl.set(null);}}/*** 插入数据方法*/public static void insert(Object obj) {// 1.获得session工厂Session session = getSession();// 2.插入数据session.save(obj);// 3.开始并执行操作session.beginTransaction().commit();// 4.关闭session工厂close(session);}/*** 更新数据的方法*/public static void update(Object obj) {// 1.获得session工厂Session session = getSession();// 2.更新数据session.update(obj);// 3.开始并执行操作session.beginTransaction().commit();// 4.关闭session工厂close(session);}/*** 删除数据的方法*/public static void delete(Object obj) {// 1.获得session工厂Session session = getSession();// 2.删除数据session.delete(obj);// 3.开始并执行操作session.beginTransaction().commit();// 4.关闭session工厂close(session);}/*** 查询(列表的形式)* select t from " + sql1 + " t " + sql2 + " "*/public static List selectList(String sql1, String sql2) {Session session = getSession();String hql = null;// 1)需要查询的条件是uid等于5// 2)数据对象为User类里面的属性// 3)t代表User对象的所有属性if (sql1 != null && sql2 != null) {hql = "select t from " + sql1 + " t " + sql2 + " ";} else {hql = "select t from " + sql1 + " t";}Query query = session.createQuery(hql);List<Object> obj = query.list();close(session);return obj;}/*** 查询(对象的形式,只查询指定ID)*/public static Object selectOnly(Class<?> name, int uid) {Session session = getSession();Object obj = (Object) session.get(name, uid);close(session);return obj;}/*** 分页查询*/public static List PageList(String task, int page, int currsize) {Session session = getSession();Query query = session.createQuery("from " + task);query.setCacheable(true);query.setFirstResult((page - 1) * currsize);query.setMaxResults(currsize);List object = query.list();close(session);return object;}// ------------------------------------------------------------/*** 比较合适于有多个条件,也就是where 这种,但只能填两个key值*/public static Object selectOne(String sql, String value1, String key1,String value2, String key2) {try {// 获得session对象Session session = getSession();// 创建sql执行Query query = session.createQuery(sql);// 把值加入query.setParameter(value1, key1);query.setParameter(value2, key2);// 用LIST存储数据List object = query.list();// obj存放的是头一条数据,由于目标是列表,所以进行转换Object obj = object.get(0);// 关闭sessionclose(session);if (obj != null) {// 在obj不等于null的情况下,// 也就是查到数据的情况下。// 返回数据return obj;}} catch (Exception e) {}// 否则返回nullreturn null;}/*** 查询制定列表的记录总数。 用的是对象,而不是表名称。 也就是User/System这些.*/public static int selectCount(String db) {Session session = getSession();List<Integer> objlist = session.createQuery("select count(*) from " + db).list();int obj = objlist.get(0);close(session);return obj;}
}

转载于:https://www.cnblogs.com/xiaoCon/archive/2013/02/26/2933963.html

Hibenate工具类(实现增/删/改/查)相关推荐

  1. 简单的php数据库操作类代码(增,删,改,查)

    数据库操纵基本流程为: 1.连接数据库服务器 2.选择数据库 3.执行SQL语句 4.处理结果集 5.打印操作信息 其中用到的相关函数有 •resource mysql_connect ( [stri ...

  2. 表单的增 删 改 查

    django单表操作 增 删 改 查 一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取 ...

  3. properties(map)增.删.改.查.遍历

    import java.util.Map; import java.util.Properties; import java.util.Set;/*** properties(map)增.删.改.查. ...

  4. python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...

    实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统. 要求1:使用一个list用于保存学生的姓名. 要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit ...

  5. PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理

    笔者最近需要使用pyspark进行数据整理,于是乎给自己整理一份使用指南.pyspark.dataframe跟pandas的差别还是挺大的. 文章目录 1.-------- 查 -------- -- ...

  6. Python 操作 Elasticsearch 实现 增 删 改 查

    Github 地址:https://github.com/elastic/elasticsearch-py/blob/master/docs/index.rst 官网地址:https://elasti ...

  7. list 增 删 改 查 及 公共方法

    1 # 热身题目:增加名字,并且按q(不论大小写)退出程序 2 li = ['taibai','alex','wusir','egon','女神'] 3 while 1: 4 username = i ...

  8. pyRedis - 操作指南:增/删/改/查、管道与发布订阅功能

    文章目录 1 redis docker 部署与安装 2 py - redis的使用 2.1 redis的连接 2.2 常规属性查看 2.2.2 关于删除 2.3 STRING 字符串的操作 2.4 H ...

  9. Linux技术--mysql数据库增-删-改-查

    # mysql 数据库 ## 数据库的操作 ### 五个单位 * 数据库服务器   Linux或者 windows  * 数据库  * 数据表 * 数据字段 * 数据行 ### 连接数据库 ``` 1 ...

最新文章

  1. python去重复行_python去除文件中重复的行实例
  2. tyvj1305 最大子序和 【单调队列优化dp】
  3. 有关中断唤醒源的思考
  4. 海南医养康养健康文旅-健康中国·万祥军:谋定国际化破题
  5. WSAENOBUFS: No buffer space available in SAP
  6. “java程序打成jar包 如何处理第三方jar包”
  7. sip-selvet 环境搭建
  8. muduo网络库源码阅读Step by Step
  9. ios项目中使用gcd的场景_Redis在PHP项目中的实际应用场景
  10. IDEA中如何给含有main方法的普通类设置JVM参数
  11. wpf 切换搜狗输入法英文_搜狗输入法使用技巧整理,建议保存收藏
  12. 编程求一个四位自然数ABCD,它乘以A后变成DCBA
  13. 【Android -- 开源库】BRVAH 的基本使用
  14. 深度学习系列18:开源人脸识别库
  15. [英语语法]句法之句子成分和种类
  16. 一行 Python 的丧心病狂
  17. 实习--广东电信有限公司汕头市分公司讲座
  18. ThinkPad E450 uefi模式下移动硬盘安装Ubuntu14.04(本机硬盘是win10)
  19. 利用MATLAB仿真实现交通红绿灯识别的目的
  20. 高德地图两个多边形区域检测重叠解决方案

热门文章

  1. (转载)文件系统与数据库系统的区别
  2. 从用户需求看互联网基础设施服务商www.shzhenai.com
  3. NVelocity:语法
  4. java线程挂起唤醒_JAVA并发(10)—interrupt唤醒挂起线程
  5. SQLServer数据库自增长标识列的更新修改操作
  6. JSSE访问带有未验证证书的HTTPS
  7. leetcode算法题--一和零★
  8. 手把手教你 Vue 服务端渲染
  9. Flask的上下文管理机制
  10. mysql 存在索引但不能使用索引的典型场景