1. package com.shuyinghengxie.doudou;
  2.  
  3. import static org.junit.Assert.*;
  4.  
  5. import java.util.Date;
  6. import java.util.List;
  7.  
  8. import org.hibernate.Query;
  9. import org.hibernate.Session;
  10. import org.hibernate.SessionFactory;
  11. import org.hibernate.Transaction;
  12. import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
  13. import org.hibernate.cfg.Configuration;
  14. import org.hibernate.mapping.Map;
  15. import org.hibernate.service.ServiceRegistry;
  16. import org.junit.After;
  17. import org.junit.Before;
  18. import org.junit.Test;
  19.  
  20. import com.shungying.hengxie.TUser;
  21. import com.shungying.hengxie.USer;
  22.  
  23. public class TEST01 {
  24.  
  25. private SessionFactory sf = null ;
  26. private Session se = null ;
  27. private Transaction ts = null ;
  28. //在测试用例方法被执行之前自动执行的方法
  29. //一般用来初始化对象
  30. @Before
  31. public void init ()
  32. {
  33. //1获取配置文件
  34. Configuration cfg = new Configuration().configure() ;
  35.  
  36. //2注册配置
  37. ServiceRegistry sr = new StandardServiceRegistryBuilder().
  38. applySettings(cfg.getProperties()).build();
  39.  
  40. //3获取SessionFactory
  41. sf = cfg.buildSessionFactory(sr) ;
  42.  
  43. //System.out.println(sf);
  44.  
  45. //4产生Session
  46. se =sf.openSession() ;
  47.  
  48. //5启动事务
  49. ts = se.beginTransaction() ;
  50. }
  51.  
  52. //后置对象
  53. //用来释放资源
  54. @After
  55. public void destroy()
  56. {
  57. //7提交数据
  58. ts.commit();
  59.  
  60. //8释放资源
  61. se.close();
  62. sf.close(); //关闭,释放资源
  63. }
  64.  
  65. //测试 Hibernate连接
  66. @Test
  67. public void test()
  68. {
  69.  
  70. //6操作数据库
  71. //添加数据
  72. USer u1 = new USer() ;
  73.  
  74. u1.setBrithday(new Date());
  75. u1.setMoney(2000);
  76. u1.setName("tom");
  77. u1.setPassword("123123");
  78.  
  79. //通过save方法将对象从临时状态转变成持久化状态
  80. se.save(u1) ; //保存数据,并未存进数据库,只是获取自增序列的id赋值
  81. System.out.println(u1);
  82.  
  83. }
  84.  
  85. //查询数据
  86. @Test
  87. public void test01()
  88. {
  89. try{
  90. //提供两个参数
  91. //1需要返回哪一个持久化类的实例
  92. //2实例的标识(数据主键值)
  93. USer us = (USer)se.get(USer.class, 4) ;//返回Object类型
  94.  
  95. //修改姓名
  96. us.setName("前面有个大傻逼");
  97.  
  98. System.out.println(us);
  99. }catch(Exception e)
  100. {
  101. System.out.println("id不存在");
  102.  
  103. e.getMessage() ;
  104. }
  105. //删除
  106. //se.delete(us);
  107. }
  108.  
  109. @Test
  110. public void test02()
  111. {
  112. USer us = (USer)se.get(USer.class, 15) ;
  113.  
  114. System.out.println(us);
  115. }
  116.  
  117. /*
  118. * get 立即加载数据
  119. * 查询数据不存在返回null ,不报异常
  120. * load 延时加载数据,使用时在加载
  121. * 查询数据不存在会报异常
  122. */
  123. @Test
  124. public void test03()
  125. {
  126. USer us = (USer)se.load(USer.class, 6) ;
  127.  
  128. System.out.println(us);
  129. }
  130.  
  131. //测试游离状态
  132. @Test
  133. public void test04()
  134. {
  135. //得到持久化状态的对象
  136. USer us = (USer)se.get(USer.class, 5) ;
  137.  
  138. System.out.println(us);
  139.  
  140. se.close() ;//关闭Session
  141.  
  142. us.setName("前面两个好大好大的傻逼");
  143.  
  144. //重新创建Session
  145. se = sf.openSession() ;
  146.  
  147. //重新开启事务
  148. ts = se.beginTransaction() ;
  149.  
  150. se.saveOrUpdate(us);
  151.  
  152. System.out.println(us);
  153. }
  154.  
  155. //测试HQL
  156. @Test
  157. public void test05()
  158. {
  159. //使用HQL
  160.  
  161. //1检测创建Query 对象
  162. Query qu = se.createQuery("from USer u where user_id < ? ") ;
  163.  
  164. //设置占位符
  165. qu.setInteger(0, 10) ;
  166.  
  167. //得到结果集
  168. List<USer> list = qu.list() ;
  169.  
  170. //遍历结果集
  171. for(USer us : list )
  172. {
  173. System.out.println(us);//打印结果集
  174. }
  175.  
  176. /*第二种占位符,从0开始*/
  177. Query qu1 = se.createQuery("from USer u where name = :uname ") ;
  178.  
  179. qu1.setString("uname", "tom") ;
  180.  
  181. //方法链调用
  182. List<USer> list1 = null ;
  183. list1 = se.createQuery("from USer u where user_id < ? ").setInteger(0, 10).list() ;
  184.  
  185. //遍历结果集
  186. for(USer us : list1 )
  187. {
  188. System.out.println(us);//打印结果集
  189. }
  190. }
  191.  
  192. //测试分页
  193. @Test
  194. public void test06()
  195. {
  196. //设置开始行号 页码=2
  197. //(页码 - 1 ) * 每页行数
  198.  
  199. List<USer> list = se.createQuery("from USer order by user_id ") //HQL语句
  200. .setMaxResults(2) //设置每页显示行数
  201. .setFirstResult(2) //设置第二页开始行号
  202. .list() ;
  203.  
  204. //遍历结果集
  205. for(USer us : list )
  206. {
  207. System.out.println(us);//打印结果集
  208. }
  209.  
  210. }
  211.  
  212. //测试分页
  213. @Test
  214. public void test07()
  215. {
  216. List<Object[ ]> list = se.createQuery("select name from USer group by name")
  217. .list() ;
  218. System.out.println(list.size());
  219. for(Object obj : list)
  220. {
  221. System.out.println(obj);
  222. }
  223. }
  224.  
  225. //测试投影查询
  226. @Test
  227. public void test08()
  228. {
  229. List<Object[ ]> list = se.createQuery("select name, money from USer")
  230. .list();
  231.  
  232. for(Object[ ] obj : list)
  233. {
  234. System.out.println(obj[0] + " " + obj[1]);
  235. }
  236.  
  237. List<USer> list1 = se.createQuery("select new USer(name, money) from USer")
  238. .list() ;
  239.  
  240. for(USer us : list1 )
  241. {
  242. System.out.println("姓名="+us.getName()+"金额="+us.getMoney());
  243. }
  244.  
  245. }
  246.  
  247. //清空表
  248. @Test
  249. public void test09()
  250. {
  251. String hql = "DELETE FROM USer " ;
  252.  
  253. Query query = se.createQuery(hql);
  254.  
  255. int result = query.executeUpdate();
  256.  
  257. System.out.println("Rows affected: " + result);
  258.  
  259. }
  260.  
  261. //清空表
  262. @Test
  263. public void test10()
  264. {
  265. TUser tu = (TUser)se.get(TUser.class, 1l) ;
  266.  
  267. System.out.println(tu);
  268. }
  269.  
  270. }

Hibernate 具体代码的更多相关文章

  1. Hibernate事务代码规范写法

    ----------------siwuxie095 事务相关概念 1.什么是事务 逻辑上的一组操作,构成这组操作的各个单元,要么一起成功, 要么一起失败 2.事务的四个特性 1)原子性 2)一致性 ...

  2. Hibernate逆向代码问题

    问题描述 使用hibernate tools 插件生成pojo代码非常方便快捷,但是我今天使用的时候发现,在eclips安装jboss插件后,找不到Hibernate Code Generation ...

  3. 记录--java 分页 思路 (hibernate关键代码)

    有时会脑袋蒙圈,记录下分页的思路 下面代码是hibernate的分页,其分页就是从第几条数据为起点,取几条数据.比如在mysql中的limit(5,10)取的就是第6条到第10条 在下面代码中的pag ...

  4. java web从零单排第二十二期《hibernate》代码分析之查看,删除用户信息

    前两期的内容不知道大家理解的怎么样,我并没有详细的去解释代码的意思,如果你已经自己都钻研明白了,那最好过,但还是一知半解的话,接下来我会仔细分析代码. 1.register.jsp:这部分代码只是简单 ...

  5. java Hibernate UUID代码

    package mypack; import java.io.Serializable; import java.net.InetAddress; /** * 唯一主键生成办法.从Hibernate中 ...

  6. hibernate入门案例

    最近准备学ssh,今天学了一下hibernate,用的是hibernate4,现在已经出5了:配置文件很容易写错,写配置文件的时候尽量复制. 需要的jar包如下:(jar包我是直接放在项目工程里面了, ...

  7. java的三大框架(三)---Hibernate

    一.什么是映射 这里所说的映射就是对象关系映射:将对象数据保存到数据库中,同时可以将数据库数据读入对象中,开发人员只对对象进行操作就可以完成对数据库数据的操作. 二.什么是基本映射 知道了什么是映射, ...

  8. hibernate(四) 双向多对多映射关系

    序言 莫名长了几颗痘,真TM疼,可能是现在运动太少了,天天对着电脑,决定了,今天下午花两小时去跑步了, 现在继上一章节的一对多的映射关系讲解后,今天来讲讲多对多的映射关系把,明白了一对多,多对多个人感 ...

  9. spring和hibernate整合时无法自动建表

    在使用spring整合hibernate时候代码如下: <property name="dataSource" ref="dataSource" /> ...

随机推荐

  1. 如何通过类找到对应的jar包

    ctrl+shift+T 然后输入对应类  

  2. 转:Eclipse常用开发插件

    以下是我整理的自己开发过程中的常用Eclipse插件,按字母排序: (1)    AmaterasUML         介绍:Eclipse的UML插件,支持UML活动图,class图,sequen ...

  3. android 项目学习随笔八(xUtils的BitmapUtils模块)

    xUtils的BitmapUtils模块: 加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象: 支持加载网络图片和本地图片: 内存管 ...

  4. Spring MVC 和 Spring 总结

    1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...

  5. ES6,ES2105核心功能一览,js新特性详解

    ES6,ES2105核心功能一览,js新特性详解 过去几年 JavaScript 发生了很大的变化.ES6(ECMAScript 6.ES2105)是 JavaScript 语言的新标准,2015 年 ...

  6. javascript 金额格式化

    金额格式化 example: <!DOCTYPE html> <html> <head> <script src="http://code.jque ...

  7. excel取消自动超链接的方法:还原和自动更正取消自动超链接

    默认设置下,我们在excel表格中输入网址,一般excel都会自动将我们输入的网址自动更正为超链接.当单击该网址,就会打开相应的网页. 如果我们不想要自动添加超链接,请看下面的excel取消自动超链接 ...

  8. Rsync原理介绍及配置应用

    1.前言 基于LAN或WAN的网络应用之间进行数据传输或者同步非常普遍,比如远程数据镜像.备份.复制.同步,数据下载.上传.共享等等.对此,最简单.直接的做法是对数据进行完全复制.然而,数据在网络上来 ...

  9. Json常见问题

    1.创建包含 JSON 语法的 JavaScript 字符串: var txt = '{ "employees" : [' + '{ "firstName":& ...

  10. Discuz2 x3深入研究内容资料

    http://blog.csdn.net/yanhui_wei/article/category/1136193