package com.hanqi.test;
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.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.hanqi.entity.Course;
import com.hanqi.entity.Student;
import com.hanqi.entity.Teacher;
import com.hanqi.entity.User; public class Test01 {
private ServiceRegistry sr=null;
private SessionFactory sf=null;
private Session se=null;
private Transaction ts=null;
//在测试用例方法类执行之前,自动执行的方法
//一般用来初始化公用的对象
//前置方法
@Before
public void init()
{ Configuration cfg=new Configuration().configure(); //2、注册配置
sr=new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties()).build();
//3、获取SessionFactory(相当于JDBC的连接)
sf= cfg.buildSessionFactory(sr);
System.out.println(sf);
//4、产生Session
se=sf.openSession();
//5、启动事务
ts=se.beginTransaction(); }
//后置方法
//一般用来说释放方法
@After
public void destory()
{
ts.commit();
se.close();
sf.close(); } //测试Hibernate连接
@Test
public void test() { //6、操作数据库
//添加数据
//实例化的新对象,处于临时状态,
User u1=new User();
u1.setBirthday(new Date());
u1.setMoney();
u1.setPassword("");
u1.setName("测试1");
//u1.setUserID(9);//自然主键
//保存数据
//通过save方法把对象从临时状态转成持久化状态
se.save(u1);
System.out.println(u1);
}
//测试查询的方法
@Test
public void test1()
{
//查询数据
//提供两个参数
//需要返回哪一个持久化类的实例
//实例的标识(数据的主键值);
//通过Session的get方法获得的对象处于持久化状态
User u2=(User)se.get(User.class,);
//修改
u2.setName(""); System.out.println(u2);
//删除
//se.delete(u2);//使持久化对象进入删除状态
}
@Test
public void test2()
{
User u1=(User)se.get(User.class, );//立即加载数据
System.out.println("get后");
System.out.println("u1="+u1);
User u2=(User)se.get(User.class, );
System.out.println("u2="+u2);
}
@Test
public void test3()
{
User u1=(User)se.load(User.class, );//延迟加载数据/懒加载 System.out.println("load后"); System.out.println("u1="+u1);//当使用时才加载
}
//测试游离状态
@Test
public void test4()
{
//得到处于持久化的对象
User u1=(User)se.get(User.class, );
System.out.println("u1="+u1);
//关闭Session
se.close(); //使u1进入游离状态
u1.setName("测试游离2343243242");
//把Oid设置成null;
u1.setUserID(null);
System.out.println("重新创建Session和事务....");
//重新创建Session和事务
se=sf.openSession();
//重新开启事务
ts=se.beginTransaction();
se.saveOrUpdate(u1);
System.out.println("u1="+u1); }
//测试HQL
@Test
public void test5()
{
//使用HQL
//1、创建Query对象
//user(对象名不是表名)
Query qu=se.createQuery("from User where userID<? and name =:uname order by userID desc ");
//设置占位符
qu.setInteger(, );
//按参数名方式设置
qu.setString("uname", "测试1");
//执行查询
List<User>lu=qu.list();
//方法链调用
lu=se.createQuery("from User where userID>?").setInteger(, ).list();
for(User u:lu)
{
System.out.println(u);
} }
//测试分页
@Test
public void test6()
{
//设置开始行号,页码=2
//每页的开始行号=(页码-1)*每页行数
List<User> lu=se.createQuery("from User order by userID").setMaxResults()
.setFirstResult()
.list();
for(User u:lu)
{
System.out.println(u);
}
}
//分组查询
@Test
public void test7()
{
List<Object[]>lo=se.createQuery("select name ,count(1) from User group by name").list(); for(Object[] o:lo )
{
System.out.println(o[]);
} }
//测试投影查询
@Test
public void test8()
{
List<Object[]>lo=se.createQuery("select userID,name from User").list();
for(Object[]obj:lo)
{
System.out.println(obj[]+" "+obj[]);
}
System.out.println("$$$$$$$$$$$$");
// 返回持久化对象的集合
List<User>lu=se.createQuery("select new User(userID,name) from User").list();
for(User u:lu)
{
System.out.println(u);
se.update(u);
} }
//测试新的类
@Test
public void test9()
{
Student st=(Student)se.get(Student.class, "");
System.out.println(st);
}
//测试多对一
@Test
public void test10()
{
Course cs =(Course)se.get(Course.class, "9-888");
System.out.println(cs);
}
//测试一对多
@Test
public void test11()
{
Teacher te=(Teacher)se.get(Teacher.class, "");
System.out.println(te);
se.delete(te);
} }

hibernate 实现分页查询语句、单条查询语句、多条查询语句、修改、删除语句的更多相关文章

  1. (五)连接查询(SQL99标准)、子查询、分页查询、联合查询

    一.连接查询(SQL99标准) 1.含义:当要查询的数据来自多张表时要使用连接查询 2.语法: select 查询列表 from 表1 别名 [连接类型] join 表2 别名 on 连接条件 [wh ...

  2. java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)

    1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...

  3. SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题

    目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...

  4. 常用sql语句总结(一)(查询)

    常用sql语句总结(一)(查询) 数据操作语句:DML 数据定义语句:DDL 数据控制语句:DCL (执行顺序------序号) 一.基本查询: 1. SELECT * ----- 2 FROM 数据 ...

  5. mysql 查询 添加 删除 语句

    1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 d ...

  6. oracle数据库常用的99条查询语句(转载)

    1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...

  7. sql语句增删改查与子查询

    修改表 修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table `demo01` rename `demo02 ...

  8. Oracle生成查询包含指定字段名对应的所有数据表记录语句

    应用场合:已知字段名字,查询数据库中所有数据表中包含该字段名的所有数据表 操作办法:指定字段名,数据库表用户,执行下面查询语句即可 --Oracle生成查询包含指定字段名对应的所有数据表记录语句 de ...

  9. mysql查询语句,通过limit来限制查询的行数。

    mysql查询语句,通过limit来限制查询的行数. 例如: select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 ...

随机推荐

  1. 【Java每日一题】20161108

    package Nov2016; import java.util.TreeSet; public class Ques1108 { public static void main(String[] ...

  2. Git submodule 特性

    当你习惯了代码的 VCS 后,基本上是离不开的. 作为一个依赖多个子项目组成的项目,要实现直观的代码逻辑结构,可以考虑使用 Git submodule 特性. 当然,如果只是单独的依赖的话,用依赖管理 ...

  3. redis事务详解

    mysql中也存在事务的概念.其实事务的定义是一样的.一组操作的集合,作为一个整体,要么全执行,要么全不执行. redis设置事务三步骤: 开始事务 :multi 操作加入事务队列 执行事务 :exe ...

  4. Java的对象初始化过程

    成员变量(字段)初始化顺序 在一个类里初始化的顺序是由成员变量在类里面的定义的顺序来决定的.即使成员变量大量散布于类的各个方法定义的中间,那些成员变量仍会在调用任何方法之前得以初始化,甚至在构造函数调 ...

  5. SlidesJS - 老牌的响应式 jQuery 幻灯片插件

    SlidesJS 是一款老牌的 jQuery 幻灯片插件,经过多年的发展,已经成为一款功能齐全,设计精巧的幻灯片插件.支持循环.自动播放功能和淡入淡出过渡效果,并且能够自动生成分页,可以帮助开发者制作 ...

  6. SlimerJS – Web开发人员可编写 JS 控制的浏览器

    SlimerJS 是一个提供给 Web 开发人员,可通过脚本编程控制的浏览器.它可以让你使用 Javascript 脚本操纵一个网页:打开一个网页,点击链接,修改的内容等,这对于做功能测试,页面自动机 ...

  7. 使用gulp来构建一个前端项目

    什么是gulp? gulp是一个前端项目构建工具,是自动化项目的构建利器,它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成.你可以使用gulp及其插件对你的项目代码 ...

  8. asp.net正则模板引擎代码

    我们申明一个数组 ]; 接下来关键的正则表达式: RegexOptions options = RegexOptions.None; //嵌套模板标签(兼容) r[] = new Regex(@&qu ...

  9. 【服务器】CentOS下部署运行NodeJs Web App

    NodeJs Web App测试完成后,要怎么部署呢?介绍两个不错的方案 已知以下情景: 我要为 「kenniu」这个项目做配置 它的入口文件在 「/path/to/entry.js」 运行的User ...

  10. VMware Data Recovery备份恢复vmware虚拟机

    VMware Data Recovery 是VMware虚拟机备份工具,可创建虚拟机备份,同时不会中断虚拟机的使用或虚拟机提供的数据和服务.Data Recovery 管理现有备份,并在这些备份过时后 ...