Hibernate【2】——封装工具、HibernateUtil类以及DAO层的BaseDAO类

ε祈祈猫儿з 提交于 2020-03-21 01:12:41

参考博文:http://blog.csdn.net/hanhan313/article/details/8125924

1、整体目录

(1)添加一个HibernateUtil类(获取会话)

(2)添加一个BaseDAO类(基本操作)

(3)添加一个测试类

2、HibernateUtil

 1 package com.demo.util;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.cfg.Configuration;
 6 import org.hibernate.service.ServiceRegistry;
 7 import org.hibernate.service.ServiceRegistryBuilder;
 8 
 9 public class HibernateUtil {
10       private static SessionFactory sessionFactory;
11       
12       /**
13       * @return 获取会话工厂
14       */
15        public static SessionFactory getSessionFactory()
16        {
17          //第一步:读取Hibernate的配置文件  hibernamte.cfg.xml文件
18          Configuration con=new Configuration().configure();
19          //第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
20          ServiceRegistryBuilder regbulider=new ServiceRegistryBuilder().applySettings(con.getProperties());
21          //创建注册服务
22          ServiceRegistry reg=regbulider.buildServiceRegistry();
23          //第三步:创建会话工厂
24          SessionFactory sessionFactory=con.buildSessionFactory(reg);
25          return sessionFactory;
26        }
27        
28       /**
29       * @return 获取会话对象
30       */
31        public static Session getSession()
32        {
33           return getSessionFactory().openSession();
34        }
35 }

3、BaseDAO类

  1 package com.demo.dao;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 
  6 import org.hibernate.Query;
  7 import org.hibernate.Session;
  8 import org.hibernate.Transaction;
  9 
 10 import com.demo.util.HibernateUtil;
 11 
 12 public class BaseDAO {
 13       /**
 14      * @param obj 添加数据
 15      * @return
 16      */
 17       public static boolean add(Object obj)
 18       {
 19         Session session=null;
 20         Transaction tran=null;
 21         boolean result=false;
 22         try
 23         {
 24             session=HibernateUtil.getSession();
 25             tran=session.beginTransaction();
 26             session.save(obj);
 27             tran.commit();
 28             result=true;
 29         }
 30         catch (Exception e)
 31         {
 32            if(tran!=null)
 33            {
 34                //事物回滚
 35                tran.rollback();
 36            }
 37         }
 38         finally
 39         {
 40             if(session!=null)
 41             {
 42                 //关闭session
 43                 session.close();
 44             }
 45         }
 46         return result;
 47       }
 48       
 49       /**
 50      * @return 更新数据 
 51      * 参数为修改的主键id对象
 52      */
 53     public static boolean update(Object object)
 54       {
 55             Session session=null;
 56             Transaction tran=null;
 57             boolean result=false;
 58             try
 59             {
 60                 session=HibernateUtil.getSession();
 61                 tran=session.beginTransaction();
 62                 session.update(object);
 63                 tran.commit();
 64                 result=true;
 65             }
 66             catch (Exception e)
 67             {
 68                if(tran!=null)
 69                {
 70                    //事物回滚
 71                    tran.rollback();
 72                }
 73             }
 74             finally
 75             {
 76                 if(session!=null)
 77                 {
 78                     //关闭session
 79                     session.close();
 80                 }
 81             }
 82             return result;
 83           }
 84          
 85       /**
 86      * @param c
 87      * @param id  查询一条数据根据主键的id号
 88      * @return
 89      */
 90       public static Object get(Class c,int id)
 91       {
 92             Session session=null;
 93             Object object=null;
 94             try
 95             {
 96                 session=HibernateUtil.getSession();
 97                 object=session.get(c,id);
 98             }
 99             catch (Exception e)
100             {
101             }
102             finally
103             {
104                 if(session!=null)
105                 {
106                     //关闭session
107                     session.close();
108                 }
109             }
110             return object;
111       }
112 
113       /**
114      * @param obj
115      * @return 删除数据
116      */
117     public static boolean delete(Object obj)
118       {
119             Session session=null;
120             Transaction tran=null;
121             boolean result=false;
122             try
123             {
124                 session=HibernateUtil.getSession();
125                 tran=session.beginTransaction();
126                 session.delete(obj);
127                 tran.commit();
128                 result=true;
129             }
130             catch (Exception e)
131             {
132                if(tran!=null)
133                {
134                    //事物回滚
135                    tran.rollback();
136                }
137             }
138             finally
139             {
140                 if(session!=null)
141                 {
142                     //关闭session
143                     session.close();
144                 }
145             }
146             return result;
147       }
148 
149 
150       /**
151      * @param <T> 查询多条记录
152      * @param sql  sql语句
153      * @param param 参数数组
154      * @return
155      */
156      @SuppressWarnings("unchecked")
157     public static <T> List<T> query(String sql,String[] param)
158       {
159 
160           List<T> list=new ArrayList<T>();
161           Session session=null;
162            try
163             {
164                 session=HibernateUtil.getSession();
165                 Query query=session.createQuery(sql);
166                 if(param!=null)
167                 {
168                     for(int i=0;i<param.length;i++)
169                     {
170                         query.setString(i,param[i]);    
171                     }
172                 }
173                 list=query.list();
174             }
175             catch (Exception e)
176             {
177             }
178             finally
179             {
180                 if(session!=null)
181                 {
182                     session.close();
183                 }
184             }
185           return list;
186       }
187       /**
188      * @param sql
189      * @param param 查询单条记录
190      * @return
191      */
192     public static Object queryOne(String sql,String[] param)
193       {
194           Object object=null;
195           Session session=null;
196            try
197             {
198                 session=HibernateUtil.getSession();
199                 Query query=session.createQuery(sql);
200                 if(param!=null)
201                 {
202                     for(int i=0;i<param.length;i++)
203                     {
204                         query.setString(0,param[i]);    
205                     }
206                     object=query.uniqueResult();
207                 }
208             }
209             catch (Exception e)
210             {
211             }
212             finally
213             {
214                 if(session!=null)
215                 {
216                     session.close();
217                 }
218             }
219           return object;
220       }
221     /**
222      * @param <T>
223      * @param sql
224      * @param param
225      * @param page
226      * @param size
227      * @return 实现分页查询
228      */
229     @SuppressWarnings("unchecked")
230     public static <T> List<T> queryByPage(String sql,String[] param,int page,int size)
231       {
232           List<T> list=new ArrayList<T>();
233           Session session=null;
234            try
235             {
236                 session=HibernateUtil.getSession();
237                 Query query=session.createQuery(sql);
238                 if(param!=null)
239                 {
240                     for(int i=0;i<param.length;i++)
241                     {
242                         query.setString(i,param[i]);    
243                     }
244                 }
245                 //筛选条数
246                 query.setFirstResult((page-1)*size);
247                 query.setMaxResults(size);
248                 list=query.list();
249             }
250             catch (Exception e)
251             {
252             }
253             finally
254             {
255                 if(session!=null)
256                 {
257                     session.close();
258                 }
259             }
260           return list;
261       }
262     /**
263      * @param hql
264      * @param pras
265      * @return返回数据个数
266      */
267     public static int getCount(String hql, String[] pras) {
268         int resu = 0;
269         Session s = null;
270         try {
271             s = HibernateUtil.getSession();
272             Query q = s.createQuery(hql);
273             if (pras != null) {
274                 for (int i = 0; i < pras.length; i++) {
275                     q.setString(i, pras[i]);
276                 }
277             }
278             resu = Integer.valueOf(q.iterate().next().toString());
279         } catch (Exception e) {
280             e.printStackTrace();
281         } finally {
282             if (s != null)
283                 s.close();
284         }
285         return resu;
286     }
287      
288 
289 }

4、TestHibernateUtil类

 1 package com.demo.test;
 2 
 3 import java.util.Iterator;
 4 import java.util.List;
 5 
 6 import com.demo.dao.BaseDAO;
 7 import com.demo.model.User;
 8 
 9 public class TestHibernateUtil {
10     public static void main(String[] args) {
11         
12         BaseDAO userDao = new BaseDAO();
13         //add
14         User user1 = new User();
15         user1.setUserName("asdf");
16         user1.setUserPwd("1234");
17         userDao.add(user1);
18         System.out.println("添加了一条数据:asdf-->1234");
19         //get
20         User user2 = (User)userDao.get(User.class, 6);
21         System.out.println("用户ID为6的用户数据:"+user2.getUserName()+"-->"+user2.getUserPwd());
22         //update
23         user2.setUserName("test");
24         user2.setUserPwd("789");
25         userDao.update(user2);
26         System.out.println("用户ID为6的用户数据:"+user2.getUserName()+"-->"+user2.getUserPwd());
27         //query all
28         String[] para ={"3"};
29         List<User> list = userDao.query("from User u where u.id=?", para);
30         Iterator iter = list.iterator();
31         User user3 = null;
32         while(iter.hasNext()){
33             user3 = (User)iter.next();
34             System.out.println(user3.getUserName()+"-->"+user3.getUserPwd());
35         }
36         
37         
38         //del by id
39 /*        User user4 = new User();
40         user4.setId(5);
41         userDao.delete(user4);
42         System.out.println("删除了ID为5的用户!");
43 */    }
44 }

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!