基本查询:HQL查询、Criteria查询、原生SQL查询

HQL查询

HQL:单表、简单的多表查询 - 永远不会出现和表相关的信息 - 所有信息与类信息相关
1.通过hql获得query对象

//		Query query = session.createQuery("from Customer where cust_id = ? and cust_name=?");
		Query query = session.createQuery("from Customer where cust_id=:id and cust_name=:name");

2.设置占位符参数

//		query.setString(0, "阿里巴巴");
//		query.setParameter(0, "阿里巴巴");
		// :id :name - 命名占位符
		query.setParameter("name", "阿里巴巴");
		query.setParameter("id", 8l);

3.获得结果集 - 唯一结果

		Customer c = (Customer) query.uniqueResult();

4.查询全部Customer对象

		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		// -----------------------
		// 1> 通过hql获得query对象
		// select * from cst_customer;
		// from Customer
		Query query = session.createQuery("from Customer");
		// 2> 获得查询集合列表
		List<Customer> list = query.list();
		
		System.out.println(list);
		// -----------------------
		tx.commit();
		session.close();

Criteria查询

Criteria只能做单表查询
1.使用Criteria查询全部Customer对象

// 1> 通过session获得Criteria对象
		Criteria criteria = session.createCriteria(Customer.class);
		
		// 2> 获得结果
		List<Customer> list = criteria.list();

2.使用Criteria根据name查询Customer对象

// 1> 获得criteira对象
		Criteria criteria = session.createCriteria(Customer.class);
		// 2> 设置查询条件 - 静态方法Restrictions
		criteria.add(Restrictions.eq("cust_name", "阿里巴巴"))
		.add(Restrictions.idEq(8l));
		
		// 3> 获得结果集 - 唯一结果
		Customer customer = (Customer) criteria.uniqueResult();

原生SQL查询

1.使用SQL查询全部Customer对象

public void test01() {
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		// -----------------------
		// 0> sql语句
		String sql = "select * from cst_customer";
		// 1> 通过session获得SQLQuery对象
		SQLQuery sqlQuery = session.createSQLQuery(sql);
		
		// 2> 获得结果 - 所有的记录,每一条封装为一个数组
		List<Object[]> list = sqlQuery.list();
		
		for (Object[] os:list) {
			System.out.println(Arrays.toString(os));
		}
		
		// -----------------------
		tx.commit();
		session.close();
	}
  1. // 使用SQL查询全部Customer对象 - 封装对象
public void test03() {
    	Session session = HibernateUtils.openSession();
    	Transaction tx = session.beginTransaction();
    	// -----------------------
    	// 0> sql语句
    	String sql = "select * from cst_customer";
    	// 1> 通过session获得SQLQuery对象
    	SQLQuery sqlQuery = session.createSQLQuery(sql);
    	// 在查询之前,添加实体类型
    	sqlQuery.addEntity(Customer.class);
    	// 2> 获得结果 - 按照实体类型,封装对象
    	List<Customer> list = sqlQuery.list();
    	System.out.println(list);
    	// -----------------------
    	tx.commit();
    	session.close();
    }

3.使用sql根据name查询Customer对象

public void test02() {
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		// -----------------------
		// 0> sql语句,占位符只能用?
		String sql = "select * from cst_customer where cust_name=?";
		// 1> 获得SQLQuery对象
		SQLQuery sqlQuery = session.createSQLQuery(sql);
		// 2> 设置查询条件 - 静态方法Restrictions
		sqlQuery.setParameter(0, "阿里巴巴");
		
		// 3> 获得结果集 - 唯一结果
		Customer customer = (Customer) sqlQuery.uniqueResult();
		System.out.println(customer);
		// -----------------------
		tx.commit();
		session.close();
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值