hibernate 实现分页查询语句、单条查询语句、多条查询语句、修改、删除语句
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 实现分页查询语句、单条查询语句、多条查询语句、修改、删除语句的更多相关文章
- (五)连接查询(SQL99标准)、子查询、分页查询、联合查询
一.连接查询(SQL99标准) 1.含义:当要查询的数据来自多张表时要使用连接查询 2.语法: select 查询列表 from 表1 别名 [连接类型] join 表2 别名 on 连接条件 [wh ...
- java:Hibernate框架3(使用Myeclipse逆向工程生成实体和配置信息,hql语句各种查询(使用hibernate执行原生SQL语句,占位符和命名参数,封装Vo查询多个属性,聚合函数,链接查询,命名查询),Criteria)
1.使用Myeclipse逆向工程生成实体和配置信息: 步骤1:配置MyEclipse Database Explorer: 步骤2:为项目添加hibernate的依赖: 此处打开后,点击next进入 ...
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...
- 常用sql语句总结(一)(查询)
常用sql语句总结(一)(查询) 数据操作语句:DML 数据定义语句:DDL 数据控制语句:DCL (执行顺序------序号) 一.基本查询: 1. SELECT * ----- 2 FROM 数据 ...
- mysql 查询 添加 删除 语句
1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 d ...
- oracle数据库常用的99条查询语句(转载)
1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...
- sql语句增删改查与子查询
修改表 修改表 语法: Alter table <旧表名> rename [ TO] <新表名>; 例子:Alter table `demo01` rename `demo02 ...
- Oracle生成查询包含指定字段名对应的所有数据表记录语句
应用场合:已知字段名字,查询数据库中所有数据表中包含该字段名的所有数据表 操作办法:指定字段名,数据库表用户,执行下面查询语句即可 --Oracle生成查询包含指定字段名对应的所有数据表记录语句 de ...
- mysql查询语句,通过limit来限制查询的行数。
mysql查询语句,通过limit来限制查询的行数. 例如: select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 ...
随机推荐
- Java工程图标前面的红色叹号
有时Java工程图标前面会出现一个红色的叹号,这是因为工程引入的jar包不存在(或者被删除.移动)造成的. 右键点击工程,选择Build Path->Configure Build Path,弹 ...
- Hibernate多对多关系映射(建表)
下边讲述Hibernate多对多关系映射. 多对多关系的表的结构为: 两个实体表,还包含一个关系表,关系表为复合主键,如果要使用Hibernate多对多关系映射,则关系表必须只包含两个字段,如果生成了 ...
- java集合-集合大家族
在编写 Java 程序中,我们最常用的除了八种基本数据类型,String 对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!Java 中集合大家族的成员实在是太丰富了,有常用的 Array ...
- Framer – 将视觉搞转换为更真实的动态原型
Framer 是一个 JavaScript 框架,简化了创建现实原型,实现完整的3D效果.以一种简单,可读的和强大的方式定义交互和创建动画. 另外还有 Framer Generator 是一个桌面应 ...
- Progress.js – 为页面上的任意对象创建进度条效果
Progress.js 是一个 JavaScript 和 CSS3 的库,它帮助开发人员为网页上的每个对象创建和管理进度条效果.你可以设计自己的模板,进度条或者干脆定制. 您可以使用 Progress ...
- JAVASCRIPT实现网页版:俄罗斯方块
HTML+CSS+JS实现俄罗斯方块完整版,素材只有图片,想要的下载图片按提示名字保存,css中用的时候注意路径!!主要在JS中!JS附有详细注释 效果: 按键提示:[键盘按键] 素材:图片名字与代码 ...
- (转)高性能JavaScript:加载和运行(动态加载JS代码)
浏览器是如何加载JS的 当浏览器遇到一个<script>标签时,浏览器首先根据标签src属性下载JavaScript代码,然后运行JavaScript代码,继而继续解析和翻译页面.如果需要 ...
- BFC布局原理
写这篇博客的初衷其实是在解决浮动的时候看到的这个方法,就想着BFC是什么,为什么可以清除浮动.结果不看不知道,一看越看越不明白,潜下心来研究看看,总结一下学习心得. 1.BFC是什么 BFC就是Box ...
- 浅谈float浮动
float大概是css3以前网页布局里最常用的一个属性了,经常看到一言不合就浮动的代码,就一起来深入挖掘一下这个一半天使一半魔鬼的属性吧. 本文是读张鑫旭大神慕课网float视频后的一些总结及一些拓展 ...
- 转:jQuery.data
原文地址:http://www.it165.net/pro/html/201404/11922.html 内存泄露 首先看看什么是内存泄露,这里直接拿来Aaron中的这部分来说明什么是内存泄露,内存泄 ...