当前位置:
首页 >
Hibenate工具类(实现增/删/改/查)
发布时间:2025/7/25
38
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Hibenate工具类(实现增/删/改/查)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
自己学习的时候,顺手写的。主要为了减少重复操作!感觉还是可以的!
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工具类(实现增/删/改/查)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 在 iOS 应用中实现飞行模式提醒
- 下一篇: 保存GNOME桌面环境中声卡的音量设置