Hibernate(2)下

Hibernate中的批量查询(概述)
一共提供了三种查询方式
HQL查询(多表查询,但不复杂时使用):hibernate query language
hibernate独家查询语言,属于面向对象的查询语言
基本查询

@Test
//基本查询
public void fun1() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 先书写HQL语句
	//String hql = "from cn.itheima.domain.Customer";
	String hql = "from Customer";//查询所有Customer
	
	//2> 根据HQL语句创建查询语句
	Query query = session.createQuery(hql);
	//3> 根据查询对象获得查询结果
	List<Customer> list = query.list(); 
	//查询结果多个  返回list结果
	//query.uniqueResult(); //接收唯一的查询结果
	System.out.println(list);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

条件查询

@Test
//条件查询
//HQL语句中,不可能出现任何数据库相关的信息的
public void fun2() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 先书写HQL语句
	//String hql = "from cn.itheima.domain.Customer";
	String hql = "from Customer where cust_id = 1 ";
	//查询id为1的Customer(条件填属性名)
	//2> 根据HQL语句创建查询语句
	Query query = session.createQuery(hql);
	//3> 根据查询对象获得查询结果
	Customer c = (Customer) query.uniqueResult();
	System.out.println(c);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}
@Test
//条件查询
//问号占位符的使用
public void fun3() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 先书写HQL语句
	//String hql = "from cn.itheima.domain.Customer";
	String hql = "from Customer where cust_id = ? ";
	//查询id为1的Customer(条件填属性名)
	//2> 根据HQL语句创建查询语句
	Query query = session.createQuery(hql);
	//设置参数
	//query.setLong(0, 1l);
	query.setParameter(0, 1l);
	//3> 根据查询对象获得查询结果
	Customer c = (Customer) query.uniqueResult();
	System.out.println(c);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

@Test
//条件查询
//命名占位符的使用
public void fun4() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 先书写HQL语句
	//String hql = "from cn.itheima.domain.Customer";
	String hql = "from Customer where cust_id = :cust_id ";
	//:号自动识别为占位符
	//2> 根据HQL语句创建查询语句
	Query query = session.createQuery(hql);
	//设置参数
	query.setParameter("cust_id",1l);
	//3> 根据查询对象获得查询结果
	Customer c = (Customer) query.uniqueResult();
	System.out.println(c);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

分页查询

@Test
//分页查询
public void fun5() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 先书写HQL语句
	String hql = "from Customer  ";
	//查询id为1的Customer(条件填属性名)
	//2> 根据HQL语句创建查询语句
	Query query = session.createQuery(hql);
	//设置分页信息
	query.setFirstResult(0);
	query.setMaxResults(1);
	//3> 根据查询对象获得查询结果
	List<Customer> list = query.list();
	System.out.println(list);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

Criteria查询(单表查询)
Hibernate自创的无语句面向对象查询
基本查询

@Test
//基本查询
public void fun1() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	//查询所有customer对象
	Criteria criteria = session.createCriteria(Customer.class);
	
	List<Customer> list = criteria.list();
	//criteria.uniqueResult();
	
	System.out.println(list);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

条件查询

@Test
//条件查询
//HQL语句中,不可能出现任何数据库相关的信息的
// >     		  	gt
// >=				ge
// <=				lt
// ==				eq
// !=				ne
// in				in
// between and		between
// like				like
// is not null		isNotNull
// is null			isNull
// or				or
// not				and
public void fun2() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	//创建criteria查询对象
	Criteria criteria = session.createCriteria(Customer.class);
	//添加查询语句
	criteria.add(Restrictions.eq("cust_id", 1l));
	//执行查询获得结果
	Customer c = (Customer) criteria.uniqueResult();
	
	System.out.println(c);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

分页查询

@Test
//分页查询
public void fun3() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//查询所有customer对象
	Criteria criteria = session.createCriteria(Customer.class);
	
	criteria.setFirstResult(0);
	criteria.setMaxResults(2);
	
	List<Customer> list = criteria.list();
	System.out.println(list);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

设置查询总记录数

@Test
//查询总记录数
public void fun4() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//查询所有customer对象
	Criteria criteria = session.createCriteria(Customer.class);
	//设置查询的聚合函数 => 总行数
	criteria.setProjection(Projections.rowCount());
	//执行查询
	Long count = (Long) criteria.uniqueResult();
	System.out.println(count);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

原生SQL查询(复杂的业务查询)
基本查询:返回数组list
返回对象list

@Test
//基本查询
public void fun1() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 书写sql语句
	String sql = "select * from cst_customer";
	//2> 创建sql查询对象
	SQLQuery query = session.createSQLQuery(sql);
	//3> 调用方法查询结果
	List<Object[]> list = query.list();
	//query.uniqueResult();
	for(Object[] objs : list) {
		System.out.println(Arrays.toString(objs));
	}
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

@Test
//基本查询
public void fun2() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 书写sql语句
	String sql = "select * from cst_customer";
	//2> 创建sql查询对象
	SQLQuery query = session.createSQLQuery(sql);
	//3>指定将结果集封装到哪个对象中
	query.addEntity(Customer.class);
	//4> 调用方法查询结果
	List<Customer> list = query.list();
	//query.uniqueResult();
		System.out.println(list);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

条件查询

@Test
//条件查询
public void fun3() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 书写sql语句
	String sql = "select * from cst_customer where cust_id = ?";
	//2> 创建sql查询对象
	SQLQuery query = session.createSQLQuery(sql);
	//3>指定将结果集封装到哪个对象中
	query.setParameter(0, 1l);
	query.addEntity(Customer.class);
	//4> 调用方法查询结果
	List<Customer> list = query.list();
	//query.uniqueResult();
		System.out.println(list);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

分页查询

@Test
//分页查询
public void fun4() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 书写sql语句
	String sql = "select * from cst_customer  limit ?,?";
	//2> 创建sql查询对象
	SQLQuery query = session.createSQLQuery(sql);
	//设置参数
	query.setParameter(0, 0);
	query.setParameter(1, 3);
	//3>指定将结果集封装到哪个对象中
	query.addEntity(Customer.class);
	//4> 调用方法查询结果
	List<Customer> list = query.list();
	//query.uniqueResult();
		System.out.println(list);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}

查询总记录数
注意: 数据强转
object转成long 先转换成String 再转化成Long
String countString = String.valueOf(countObject);
Long count = Long.valueOf(countString);

@Test
//查询总记录数
public void fun5() {
	//1.获得session
	Session session = HibernateUtils.openSession();
	//2.控制事务
	Transaction tx = session.beginTransaction();
	//3.执行操作
	//------------------------------------------
	
	//1> 书写sql语句
	String sql = "select count(*) from cst_customer ";
	//2> 创建sql查询对象
	SQLQuery query = session.createSQLQuery(sql);
	//4> 调用方法查询结果
	//List<Customer> list = query.list();
	Object countObject = query.uniqueResult();
	String countString = String.valueOf(countObject);
	Long count = Long.valueOf(countString);
		System.out.println(count);
	
	//------------------------------------------
	//4.提交事务,关闭资源
	tx.commit();
	session.close();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值