HibernateUtil工具 高级本地线程的Session封装 高级增删查改及分页实现
来源:互联网 发布:搬瓦工 centos 7 和 6 编辑:程序博客网 时间:2024/05/20 05:55
<strong><span style="font-size:18px;">package com.hsp.util;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;final public class HibernateUtil {private static SessionFactory sessionFactory=null;//使用线程局部模式private static ThreadLocal<Session> threadLocal=new ThreadLocal<Session>();private HibernateUtil(){};static {sessionFactory=new Configuration().configure().buildSessionFactory();}//获取全新的全新的sesessionpublic static Session openSession(){return sessionFactory.openSession();}//获取和线程关联的sessionpublic static Session getCurrentSession(){Session session=threadLocal.get();//判断是否得到if(session==null){session=sessionFactory.openSession();//把session对象设置到 threadLocal,相当于该session已经和线程绑定threadLocal.set(session);}return session;}//统一的一个修改和删除(批量 hql) hql"delete upate ...??"public static void executeUpdate(String hql,String [] parameters){Session s=null;Transaction tx=null;try {s=openSession();tx=s.beginTransaction();Query query=s.createQuery(hql);//先判断是否有参数要绑定if(parameters!=null&& parameters.length>0){for(int i=0;i<parameters.length;i++){query.setString(i, parameters[i]);}}query.executeUpdate();tx.commit();} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e.getMessage());// TODO: handle exception}finally{if(s!=null&&s.isOpen()){s.close();}}}//统一的添加的方法public static void save(Object obj){Session s=null;Transaction tx=null;try {s=openSession();tx=s.beginTransaction();s.save(obj);tx.commit();} catch (Exception e) {if(tx!=null){tx.rollback();}throw new RuntimeException(e.getMessage());// TODO: handle exception}finally{if(s!=null && s.isOpen()){s.close();}}}//提供一个统一的查询方法(带分页) hql 形式 from 类 where 条件=? ..public static List executeQueryByPage(String hql,String [] parameters,int pageSize,int pageNow){Session s=null;List list=null;try {s=openSession();Query query=s.createQuery(hql);//先判断是否有参数要绑定if(parameters!=null&& parameters.length>0){for(int i=0;i<parameters.length;i++){query.setString(i, parameters[i]);}}query.setFirstResult((pageNow-1)*pageSize).setMaxResults(pageSize);list=query.list();} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e.getMessage());// TODO: handle exception}finally{if(s!=null&&s.isOpen()){s.close();}}return list;}//提供一个统一的查询方法 hql 形式 from 类 where 条件=? ..public static List executeQuery(String hql,String [] parameters){Session s=null;List list=null;try {s=openSession();Query query=s.createQuery(hql);//先判断是否有参数要绑定if(parameters!=null&& parameters.length>0){for(int i=0;i<parameters.length;i++){query.setString(i, parameters[i]);}}list=query.list();} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e.getMessage());// TODO: handle exception}finally{if(s!=null&&s.isOpen()){s.close();}}return list;}}如何调用:</span></strong><pre name="code" class="java">//调用修改/删除/*String hql="update Student set sage=sage+1 where sdept=?";String parameters[]={"计算机系"};try {HibernateUtil.executeUpdate(hql, parameters);} catch (Exception e) {System.out.println(e.getMessage());// TODO: handle exception}*/
---------------------------------------------
/*添加*//*Course c=new Course();c.setCname("servlet");c.setCid(4L);HibernateUtil.save(c);*/
-----------------------------------------------------------------------
//使用工具分页/*String hql="select sname,saddress from Student order by sage";String parameters[]=null;List<Object[]> list= HibernateUtil.executeQueryByPage(hql, parameters, 2, 3) ;for(Object[] s: list){System.out.println(s[0].toString()+" "+s[1].toString());}*/
0 0
- HibernateUtil工具 高级本地线程的Session封装 高级增删查改及分页实现
- MySQL高级增删改查
- 封装Hibernate的Session操作和增删查改的工具类
- ext-4.2之grid的高级应用:增删改查!
- sql增删改查之高级查询
- SQLite实现建表、增删改查及分页
- SQLite实现建表、增删改查及分页
- DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
- DBUtils案列:实现数据的增删改查及分页显示
- 本地数据库的建立及增删改查,建议使用
- Solrj的增删改查,高亮,及分页
- ztree 高级增删改查 节点直接改
- SqlHelper类实现增删改查的封装
- SSH中增删改查的封装实现
- datagrid表格分页及增删改查
- 关于分页及增删改查
- mybatis实现增删改查的工具类
- 封装thinkphp的增删改查
- Java web 负载均衡 和 缓存
- 最大公约数和最小公倍数
- atoi 自己实现 leecode
- sgdfh
- js 正则表达式 判断是否是纯数字
- HibernateUtil工具 高级本地线程的Session封装 高级增删查改及分页实现
- 如何更改在local server本地服务器运行的Wordpress的密码PS
- 第一章例题2突击战UVa11729(贪心)
- healthKit的一些知识点
- HDU 2504 又见GCD
- 呜呜呜呜呜呜呜呜呜呜呜呜呜
- android NDK 交叉编译
- JVM笔记3:Java垃圾收集算法与垃圾收集器
- JAVA基础集合