1.hibernate的hql查询
hql查询是基于对象的查询
1.首先创建Query 对象
2.根据Query对象完成操作
查询的类型,
a.基于对象的查询不带条件
如:
public void test01(){
Session session=null;
try {
session=HibernateUtil.openSession();
/**
* 对于hql而言,都是基于对象进行查询的
*/
Query query=session.createQuery("from Special");
List<Special> spes=query.list();
for(Special spe:spes){
System.out.println(spe.getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null) session.close();
}
}
b.类似于select * 的查询
如下:
@Test
public void test02(){
Session session=null;
try {
session=HibernateUtil.openSession();
List<Special> spes=session.createQuery("select spe from Special spe").list();
for(Special spe:spes){
System.out.println(spe.getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null) session.close();
}
}
c: 基于like的查询
public void test03(){
Session session=null;
try {
session=HibernateUtil.openSession();
//模糊查询
List<Student> stus=session.createQuery("from Student stu where stu.name like '张%' ").list();
for(Student spe:stus){
System.out.println(spe.getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null) session.close();
}
}
d.基于?条件的查询
特别注意:jdbc设置参数最小下标是1,hibernate的是0
public void test04(){
Session session=null;
try {
session=HibernateUtil.openSession();
//基于?条件的查询,特别注意:jdbc设置参数最小下标是1,hibernate的是0
List<Student> stus=session.createQuery("from Student stu where stu.name like ? ")
.setParameter(0, "%李%").list();
for(Student spe:stus){
System.out.println(spe.getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null) session.close();
}
}
e.基于别名的查询,使用:XXX 来说明别名的名称
public void test05(){
Session session=null;
try {
session=HibernateUtil.openSession();
//基于别名的查询,使用:XXX 来说明别名的名称
List stus=session.createQuery(“from Student where name like :name and sex=:sex “)
.setParameter(“name”, “%刘%”)
.setParameter(“sex”, “男”).list();
for(Student spe:stus){
System.out.println(spe.getName());
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null) session.close();
}
}
f.计数查询
对于返回一个结果的方法,可以使用uniqueResult方法
public void test06(){
Session session=null;
try {
session=HibernateUtil.openSession();
List<Long> stus=session.createQuery("select count(*) from Student where name like :name and sex=:sex ")
.setParameter("name", "%刘%")
.setParameter("sex", "男").list();
System.out.println(stus.get(0));
} catch (Exception e) {
e.printStackTrace();
}finally{
if(session!=null) session.close();
}
}