package com.shuyinghengxie.doudou;

 import static org.junit.Assert.*;

 import java.util.Date;
import java.util.List; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.mapping.Map;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.shungying.hengxie.TUser;
import com.shungying.hengxie.USer; public class TEST01 { private SessionFactory sf = null ;
private Session se = null ;
private Transaction ts = null ;
//在测试用例方法被执行之前自动执行的方法
//一般用来初始化对象
@Before
public void init ()
{
//1获取配置文件
Configuration cfg = new Configuration().configure() ; //2注册配置
ServiceRegistry sr = new StandardServiceRegistryBuilder().
applySettings(cfg.getProperties()).build(); //3获取SessionFactory
sf = cfg.buildSessionFactory(sr) ; //System.out.println(sf); //4产生Session
se =sf.openSession() ; //5启动事务
ts = se.beginTransaction() ;
} //后置对象
//用来释放资源
@After
public void destroy()
{
//7提交数据
ts.commit(); //8释放资源
se.close();
sf.close(); //关闭,释放资源
} //测试 Hibernate连接
@Test
public void test()
{ //6操作数据库
//添加数据
USer u1 = new USer() ; u1.setBrithday(new Date());
u1.setMoney(2000);
u1.setName("tom");
u1.setPassword("123123"); //通过save方法将对象从临时状态转变成持久化状态
se.save(u1) ; //保存数据,并未存进数据库,只是获取自增序列的id赋值
System.out.println(u1); } //查询数据
@Test
public void test01()
{
try{
//提供两个参数
//1需要返回哪一个持久化类的实例
//2实例的标识(数据主键值)
USer us = (USer)se.get(USer.class, 4) ;//返回Object类型 //修改姓名
us.setName("前面有个大傻逼"); System.out.println(us);
}catch(Exception e)
{
System.out.println("id不存在"); e.getMessage() ;
}
//删除
//se.delete(us);
} @Test
public void test02()
{
USer us = (USer)se.get(USer.class, 15) ; System.out.println(us);
} /*
* get 立即加载数据
* 查询数据不存在返回null ,不报异常
* load 延时加载数据,使用时在加载
* 查询数据不存在会报异常
*/
@Test
public void test03()
{
USer us = (USer)se.load(USer.class, 6) ; System.out.println(us);
} //测试游离状态
@Test
public void test04()
{
//得到持久化状态的对象
USer us = (USer)se.get(USer.class, 5) ; System.out.println(us); se.close() ;//关闭Session us.setName("前面两个好大好大的傻逼"); //重新创建Session
se = sf.openSession() ; //重新开启事务
ts = se.beginTransaction() ; se.saveOrUpdate(us); System.out.println(us);
} //测试HQL
@Test
public void test05()
{
//使用HQL //1检测创建Query 对象
Query qu = se.createQuery("from USer u where user_id < ? ") ; //设置占位符
qu.setInteger(0, 10) ; //得到结果集
List<USer> list = qu.list() ; //遍历结果集
for(USer us : list )
{
System.out.println(us);//打印结果集
} /*第二种占位符,从0开始*/
Query qu1 = se.createQuery("from USer u where name = :uname ") ; qu1.setString("uname", "tom") ; //方法链调用
List<USer> list1 = null ;
list1 = se.createQuery("from USer u where user_id < ? ").setInteger(0, 10).list() ; //遍历结果集
for(USer us : list1 )
{
System.out.println(us);//打印结果集
}
} //测试分页
@Test
public void test06()
{
//设置开始行号 页码=2
//(页码 - 1 ) * 每页行数 List<USer> list = se.createQuery("from USer order by user_id ") //HQL语句
.setMaxResults(2) //设置每页显示行数
.setFirstResult(2) //设置第二页开始行号
.list() ; //遍历结果集
for(USer us : list )
{
System.out.println(us);//打印结果集
} } //测试分页
@Test
public void test07()
{
List<Object[ ]> list = se.createQuery("select name from USer group by name")
.list() ;
System.out.println(list.size());
for(Object obj : list)
{
System.out.println(obj);
}
} //测试投影查询
@Test
public void test08()
{
List<Object[ ]> list = se.createQuery("select name, money from USer")
.list(); for(Object[ ] obj : list)
{
System.out.println(obj[0] + " " + obj[1]);
} List<USer> list1 = se.createQuery("select new USer(name, money) from USer")
.list() ; for(USer us : list1 )
{
System.out.println("姓名="+us.getName()+"金额="+us.getMoney());
} } //清空表
@Test
public void test09()
{
String hql = "DELETE FROM USer " ; Query query = se.createQuery(hql); int result = query.executeUpdate(); System.out.println("Rows affected: " + result); } //清空表
@Test
public void test10()
{
TUser tu = (TUser)se.get(TUser.class, 1l) ; System.out.println(tu);
} }

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. url传参

    1.两种url形式传参index.php/action/function/id/2   这种模式下:$_GET[action]就是function,$_GET[id]就是2

  2. dota BP练习工具开发:一个C/S多用户程序

    首发:个人博客,更新&纠错&回复 客户端采用C#开发,服务器使用java开发,通信方式为socket. 1.首先决定交互协议 客户端指令协议: getgames:要求服务端发送game ...

  3. jenkins相关

    1. jenkins maven tomcat做持续集成的时候几个关键配置:http://my.oschina.net/congqian/blog/112782?fromerr=PmIDbLs5 2. ...

  4. linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-110738.html linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想 xxxxxx ...

  5. Linux 中open系统调用实现原理【转】

    转自:http://blog.chinaunix.net/uid-25968088-id-3426026.html 目录 OPEN系统调用过程 Open在内核里面的入口函数时sys_open Sys_ ...

  6. linux 常见操作命令

    1.网络查询和配置 查询网卡和配置信息:ifconfig 查询指定网卡信息:ifconfig eth1 配置网卡ip信息:vi /etc/sysconfig/network-scripts/ifcfg ...

  7. TreeView htc 改写

    call the function loadTree(treeviewId) when body is loaded <body onload="loadTree('tvSelect' ...

  8. 为Docker容器配置固定IP

    当docker以桥接的方式启动容器时,容器内部的IP是经过DHCP获取的,例如:172.17.0.8/32,且每重启依次IP都会发生变动.某些特殊的情况下,需要容器内有自己固定的一个内部IP.我的实现 ...

  9. MyISAM表杂记实验

    一.本文说明 由于刚学mysql所以动手做了一些实验. 二.实验内容 1.验证MyISAM有AUOT_INCREMENT coloumn功能 ----在这里是对现有表t,增加一个主键----mysql ...

  10. Shell 字符串比较

    转自网络 Shell字符串比较 收藏 Shell 中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等. 二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. --- ...