您的位置:首页 > 数据库

hql Criteria sql不同查询方法

2017-09-04 10:37 316 查看

1. hql语句查询方法

使用hql的时候,不需要在前面加 select * :

Query q =s.createQuery("from Product p where p.name like ?");
q.setString(0, "%"+name+"%");
List<Product> ps= q.list();
for (Product p : ps) {
System.out.println(p.getName());
}


q.setString()定义查询条件,进行模糊查询。

2. Criteria语句查询方法

与HQL和SQL的区别是Criteria 完全是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹。

Criteria c= s.createCriteria(Product.class);
c.add(Restrictions.like("name", "%"+name+"%"));
List<Product> ps = c.list();
for (Product p : ps) {
System.out.println(p.getName());
}


2.1 Criteria进行分页查询

Hibernate使用Criteria 来进行分页查询

c.setFirstResult(2); 表示从第2条数据开始

c.setMaxResults(5); 表示一共查询5条数据

Criteria c= s.createCriteria(Product.class);
c.add(Restrictions.like("name", "%"+name+"%"));
c.setFirstResult(2);
c.setMaxResults(5);
List<Product> ps = c.list();
for (Product p : ps) {
System.out.println(p.getName());
}


3. sql语句查询方法

Hibernate依然保留了对标准SQL语句的支持,在一些场合,比如多表联合查询,并且有分组统计函数的情况下,标准SQL语句依然是效率较高的一种选择。

String sql = "select * from product_ p where p.name like '%"+name+"%'";

Query q= s.createSQLQuery(sql);
List<Object[]> list= q.list();
for (Object[] os : list) {
for (Object filed: os) {
System.out.print(filed+"\t");
}
System.out.println();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐