参考博文: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 }

转载于:https://www.cnblogs.com/CheeseZH/archive/2013/03/01/2938189.html

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

  1. mybatis反向生成实体类、dao层以及映射文件

    在做项目的时候,我们不得不写底层的一些繁琐代码,比如说实体类.dao层之类的,既浪费时间又费事,最主要的是还没效率,kuangkuangkuang的写半天终于写完了,到运行的时候dao层的代码居然还报 ...

  2. Dao层抽取BaseDao公共方法

    Dao层抽取BaseDao公共方法 设计IBseDao接口,定义公共的CRUD方法. // IBaseDao 接口,定义公共的CRUD方法 public interface IBaseDao<T ...

  3. 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(四)...

    了解Dao层的创建和HibernateSupportDao后,忘了要把Spring3.0的Jar包加进去lib文件夹里面,由于Spring3.0开始没有把所有需要有关联的Jar包跟功能整合包放在一起, ...

  4. SpringBoot如何自动生成实体类和Dao层以及映射文件(mybatis generator 自动生成代码)

    一.首先添加自动生成代码插件 <!-- mybatis generator 自动生成代码插件 生成时解除注释 --><plugin><groupId>org.myb ...

  5. 使用Servlet上传多张图片——Dao层(BaseDao.java)

    package orz.treeSquirrels.dao;import java.sql.Connection; import java.sql.DriverManager; import java ...

  6. 使用ueditor实现多图片上传案例——Dao层(BaseDao)

    package org.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedS ...

  7. java实现人脸识别源码【含测试效果图】——Dao层(BaseDao)

    package org.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedS ...

  8. 解决spirng无法注入redis工具类及dao层类(Springboot项目)

    记录错误 redis无法注入spring容器中 解决办法 1.首先查看RedisUtil是否注入添加@Component 2. 查看SecuirtyConfig类 3.JWTAuthenticatio ...

  9. IDEA抽风,service类和dao层Mapper类找不到

    刚才还写得好好的XXService类,在controller注入的时候,突然显示引入不了,找不该类,让我重新创建,但是我的service还在那,且半个小时前还在用,突然就这样了,这种问题,只需要清除I ...

  10. 基于hibernate的泛型Dao层设计

    泛型是JDK1.5的一个新的特性,使用泛型机制编写的程序代码要比那些杂乱的使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性.如果你的系统运行在JDK1.5以上的版本上,建议多 ...

最新文章

  1. 监管AI?吴恩达跟马斯克想到一块去了
  2. 解决ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘ 错误
  3. UITableView使用指南
  4. Kafka Consumer多线程消费
  5. /UI2/CL_NWBC_RUNTIME35 - GET_ROLES
  6. ssl问题解决的过程
  7. 【博客项目】—登录验证功能实现( 五)
  8. db2执行sql脚本
  9. Bailian4018 子串【字符串】
  10. 移动开发用户行为分析神器之--AppSee!
  11. SQL Server——SELECT单表数据查询(二)
  12. 朴素贝叶斯--新浪新闻分类实例
  13. 网易2018编程题之游历魔法王国
  14. 文件夹只读属性不能更改如何去除
  15. 3dsMax撤销不管用,3dsMax转成多边形之后无法撤回操作,3dsmax的操作步骤一直为空
  16. python怎么编辑程序_少儿编程:Python系列24——字符串的替换和检索
  17. Linux下刻录光盘
  18. js算法之旅:用队列和栈计算出扑克玩:拖板车(小猫钓鱼) 游戏的结果
  19. 如何用 Lightly 进行 Debug 断点调试?
  20. 用python画树林_用python画樱树

热门文章

  1. python 功能代码是什么_Python功能代码
  2. CEF与JavaScript交互读取电脑信息
  3. 压力测试与负载测试的区别
  4. javascript 编程指南
  5. 系统性能优化- Session丢失
  6. JQuery 获取URL中传递的参数
  7. 关于Ajax的一揽子工程(2)
  8. 我们的年代《音乐天堂》经典回顾
  9. 朱光潜:要有悲剧,才能算人生
  10. PKIX path building failed