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://www.cnblogs.com/CheeseZH/archive/2013/03/01/2938189.html
Hibernate【2】——封装工具、HibernateUtil类以及DAO层的BaseDAO类相关推荐
- mybatis反向生成实体类、dao层以及映射文件
在做项目的时候,我们不得不写底层的一些繁琐代码,比如说实体类.dao层之类的,既浪费时间又费事,最主要的是还没效率,kuangkuangkuang的写半天终于写完了,到运行的时候dao层的代码居然还报 ...
- Dao层抽取BaseDao公共方法
Dao层抽取BaseDao公共方法 设计IBseDao接口,定义公共的CRUD方法. // IBaseDao 接口,定义公共的CRUD方法 public interface IBaseDao<T ...
- 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(四)...
了解Dao层的创建和HibernateSupportDao后,忘了要把Spring3.0的Jar包加进去lib文件夹里面,由于Spring3.0开始没有把所有需要有关联的Jar包跟功能整合包放在一起, ...
- SpringBoot如何自动生成实体类和Dao层以及映射文件(mybatis generator 自动生成代码)
一.首先添加自动生成代码插件 <!-- mybatis generator 自动生成代码插件 生成时解除注释 --><plugin><groupId>org.myb ...
- 使用Servlet上传多张图片——Dao层(BaseDao.java)
package orz.treeSquirrels.dao;import java.sql.Connection; import java.sql.DriverManager; import java ...
- 使用ueditor实现多图片上传案例——Dao层(BaseDao)
package org.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedS ...
- java实现人脸识别源码【含测试效果图】——Dao层(BaseDao)
package org.dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedS ...
- 解决spirng无法注入redis工具类及dao层类(Springboot项目)
记录错误 redis无法注入spring容器中 解决办法 1.首先查看RedisUtil是否注入添加@Component 2. 查看SecuirtyConfig类 3.JWTAuthenticatio ...
- IDEA抽风,service类和dao层Mapper类找不到
刚才还写得好好的XXService类,在controller注入的时候,突然显示引入不了,找不该类,让我重新创建,但是我的service还在那,且半个小时前还在用,突然就这样了,这种问题,只需要清除I ...
- 基于hibernate的泛型Dao层设计
泛型是JDK1.5的一个新的特性,使用泛型机制编写的程序代码要比那些杂乱的使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性.如果你的系统运行在JDK1.5以上的版本上,建议多 ...
最新文章
- 监管AI?吴恩达跟马斯克想到一块去了
- 解决ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘ 错误
- UITableView使用指南
- Kafka Consumer多线程消费
- /UI2/CL_NWBC_RUNTIME35 - GET_ROLES
- ssl问题解决的过程
- 【博客项目】—登录验证功能实现( 五)
- db2执行sql脚本
- Bailian4018 子串【字符串】
- 移动开发用户行为分析神器之--AppSee!
- SQL Server——SELECT单表数据查询(二)
- 朴素贝叶斯--新浪新闻分类实例
- 网易2018编程题之游历魔法王国
- 文件夹只读属性不能更改如何去除
- 3dsMax撤销不管用,3dsMax转成多边形之后无法撤回操作,3dsmax的操作步骤一直为空
- python怎么编辑程序_少儿编程:Python系列24——字符串的替换和检索
- Linux下刻录光盘
- js算法之旅:用队列和栈计算出扑克玩:拖板车(小猫钓鱼) 游戏的结果
- 如何用 Lightly 进行 Debug 断点调试?
- 用python画树林_用python画樱树