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条 ...
随机推荐
- Android使用SAX解析XML(2)
school类包含了一个major列表,可以增加该列表的元素,以及返回该列表,还实现了Parcelable.Creator接口. package com.hzhi.my_sax; import jav ...
- line-height 属性
p.small {line-height:90%} p.big {line-height:200%} 该属性会影响行框的布局.在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最 ...
- Software Development Engineer - Database Services
http://stackoverflow.com/jobs/116486/software-development-engineer-database-services-amazon?med=clc& ...
- 算法:求幂(python版)
分别用迭代方法和递归方法实现求幂迭代方法的时间复杂度为O(n),空间复杂度为O(1)递归方法1的时间复杂度为O(logn),空间复杂度为O(logn)递归方法2的时间复杂度为O(n),空间复杂度为O( ...
- 通过python将图片生成字符画
基础知识: 1.python基础知识 快速学习链接:https://www.shiyanlou.com/courses/214 2.linux命令行操作 快速学习链接:https://www. ...
- 说说Java的内存
首先,我们来看一段程序内存溢出的代码: import java.util.ArrayList; import java.util.List; public class TestMemoryLeak { ...
- 线程Thread的基础知识学习
一.线程的基本概念 1.线程是一个程序内部的顺序控制流. 2.Java的线程是通过java.lang.Thread类来实现的. 3.VM启动时会有一个由主方法{public static void m ...
- append,appendTo和prepend #1daae2
1.append(content) ...
- Monkey测试2——Monkey测试策略
Monkey的测试策略 一. 分类 Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象.目的及类型如下: 测试的类型分为:应用程序的稳定性测试和压力测试 测试对象分为:单一a ...
- Linux学习笔记18--Linux系统服务基础
服务(Service):运行在操作系统后台的一个或多个程序,为用户或系统提供某项特定的服务. 服务通常是不中断运行的,随时接收请求,提供某项服务.例如:http网页服务由诸如nginx.apach ...