hibernate作为持久层框架目前虽然是市场的最优选择,但是其中的设计理念与思想还是需要学习的;
这里就我自己遇到的查询部分代码做个总结。
使用Query和Criteria和标准sql都在下边了
@Test
public void testGetLimit() {
Session session = sessionFactory.openSession();
Transaction tx1 = null;
try {
tx1 = session.beginTransaction();
/*1 Hql语句是hibernate独有的语句
* 更接近于面向对象的思维方式。
* 查询得到对象集合
* */
String hql = "from User where id>?";//User是对象不是表字段
Query query = session.createQuery(hql);//
query.setInteger(0, 3);//基0操作
List<User> list = query.list();
// 分页操作
// query.setFirstResult(起始位置);
// query.setMaxResults(记录数量);
// List<User> list = query.list();
/*
* 2Criteria 完全是 面向对象的方式在进行数据查询,看不到有sql语句的痕迹
* */
Criteria c = session.createCriteria(Product.class);
String name = "iphon";
c.add(Restrictions.like("name", "%"+name+"%"));
c.setFirstResult(5);
c.setMaxResults(10);
List<Product> list1 = c.list();
/*
* 3Hibernate依然保留了对标准SQL语句的支持,在一些场合,
* 比如多表联合查询,并且有分组统计函数的情况下,标准SQL语句依然是效率较高的一种选择
*
* 得到的是Object[]数组每个数组对应一个对象信息
* */
String sql = "select * from product_ p where p.id > 1";
Query q= session.createSQLQuery(sql);
List<Object[]> list2= q.list();
for (Object[] os : list2) {
for (Object filed: os) {
System.out.print(filed+"\t");
}
System.out.println();
}
tx1.commit();
}catch(RuntimeException e) {
tx1.rollback();
throw e;
} finally {
session.close();
}
}不完整,待续。。。。
本文总结了Hibernate作为持久层框架的查询方法,包括Query和Criteria的使用,以及标准SQL查询。通过实例代码,详细解析了Hibernate在数据库操作中的查询功能。
1327

被折叠的 条评论
为什么被折叠?



