Hibernate【2】——封装工具、HibernateUtil类以及DAO层的BaseDAO类
参考博文: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://img2020.cnblogs.com/blog/323808/202004/323808-20200415172728571-1992447742.jpg)
找我内推: 字节跳动各种岗位
作者:
ZH奶酪(张贺)
邮箱:
cheesezh@qq.com
出处:
http://www.cnblogs.com/CheeseZH/
*
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。