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. BPM 应用系统开发案例实战

    概述 IBM BPM 的前身是 Lombardi,是由 IBM 于 2009 年收购的产品,之后产品更名为 IBM WebSphere Lombardi Edition,目前最新版本称为 IBM BP ...

  2. C语言初学者代码中的常见错误与瑕疵(9)

    题目 字母的个数 现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个. 输入:第一行输入一个正整数T(0<T<25) 随后T ...

  3. [置顶] 1D1D动规优化初步

    例题一: 货物运输,大意: 给出N个点的坐标与需要你送过去的钱数(第一个点不需要钱),身上带钱的数目有最大值,由初始在的1点,按顺序经历每个点(中途可以回1点,回去钱就满了),问最小走的路程是多少(最 ...

  4. 在CentOS 6 32/64 上安装 PPTP 方式 VPN 服务

    网上有很多步骤, 讲了很多步骤,废话, 其实不如直接看代码, 而且也能直接运行,快速安装: rm -f /etc/pptpd.conf rm -f /etc/ppp arch=`uname -m` # ...

  5. Java字符串排列算法

    Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ...

  6. 161019、并发容器ConcurrentHashMap

    java.util.concurrent.ConcurrentMap<K, V>一种是用读写锁实现Map的方法.此种方法看起来可以实现Map响应的功能,而且吞吐量也应该不错.但是通过前面对 ...

  7. struts2的两个核心配置文件

    struts2的两个核心配置文件,即:struts.default.xml和struts.properties A,位置:都在struts2-core-version.jar文件中 B,作用,stru ...

  8. 如何在ecshop商品详情页显示供货商信息

    以下范例以ecshop2.7.2原型做为修改: 1.首先需要修改程序文件,将供货商读取出来,然后赋值给模板,   打开文件 /goos.php,   在                   $smar ...

  9. java面试每日一题12

    题目:打印出如下图案(菱形)     *    ***  ****** ********  ******   ***    * public class Diamond { public static ...

  10. dbms_job.submit 单次执行

    DBMS_JOB.SUBMIT用于定时任务,基本用法如下: DBMS_JOB.SUBMIT(:jobno,//job号                                      'yo ...