HibernateUtil升级
来源:互联网 发布:linux 新建用户 权限 编辑:程序博客网 时间:2024/05/29 18:25
一 需求
对HibernateUtil工具类进行升级,使得满足查询、分页查询、插入、更新、修改功能。
二 代码
package com.cakin.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(); } //获取全新的全新的sesession public static Session openSession(){ return sessionFactory.openSession(); } //获取和线程关联的session public 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; }}
三 测试
1 测试代码
package com.cakin.view;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.criterion.Restrictions;import com.cakin.util.*;import com.sina.domain.Course;import com.sina.domain.Studcourse;import com.sina.domain.Student;public class TestMain2 { /** * @param args */ public static void main(String[] args) { //这里我们使用增强的HibernateUtil来完成curd. System.out.println("*******查询************"); String hql="select sname,saddress from Student where sdept=? and sage>?"; String parameters[]={"计算机系","3"}; List<Object[]> list= HibernateUtil.executeQuery(hql,parameters); for(Object[] s: list){ System.out.println(s[0].toString()+" "+s[1].toString()); } System.out.println("********分页查询***********"); //使用工具分页 String hql1="select sname,saddress from Student order by sage"; String parameters1[]=null; List<Object[]> list1= HibernateUtil. executeQueryByPage(hql1, parameters1, 2, 3) ; for(Object[] s: list1){ System.out.println(s[0].toString()+" "+s[1].toString()); } System.out.println("********添加***********"); /*添加*/ Course c=new Course(); c.setCname("servlet"); c.setCid(4); HibernateUtil.save(c); System.out.println("*********修改**********"); //调用修改/删除 String hql2="update Student set sage=sage+1 where sdept=?"; String parameters2[]={"计算机系"}; try { HibernateUtil.executeUpdate(hql2, parameters2); } catch (Exception e) { System.out.println(e.getMessage()); } }}
2 测试结果
*******查询************
林青霞 上海
林可欣 北京
********分页查询***********
刘德华 南京
周华健 山东
********添加***********
*********修改**********
阅读全文
0 0
- HibernateUtil升级
- HibernateUtil
- HibernateUtil
- HIbernateUtil
- HibernateUtil
- HibernateUtil
- HibernateUtil
- HibernateUtil
- hibernateUtil
- HibernateUtil
- HibernateUtil
- HibernateUtil
- 06-hibernate实战 OR映射升级版增加用户(创建HibernateUtil)以及代码详解
- HibernateUtil ThreadLocal
- HibernateUtil.java
- HibernateUtil.java
- HibernateUtil.java
- HibernateUtil详解
- Spring Bean
- 关于opengles3.0图元重启
- 中印战争与藏南问题
- Java基础面试题
- linux----进程间通信
- HibernateUtil升级
- 第一次来到csdn博客
- 正则表达式-简介
- nginx安装
- 1133. Splitting A Linked List (25)
- Git初识
- 正则表达式-语法
- cvFindContours/findContours提取轮廓
- sql基本知识