数据查询方式

来源:互联网 发布:巴黎散步道 知乎 编辑:程序博客网 时间:2024/05/29 11:45

Hibernate提供的面向对象查询方式,通过正确配置关系,指定查询条件,就可以轻松得到数据,避免冗长sql代码。

Hibernate支持的数据查询方式包括:SQL,HQL,QBC

SQL,通过标准的SQL语句,定义数据查询请求,并通过Hibernate的SQL Query接口传递给数据库,执行SQL查询的步骤:

定义SQL查询指令字符串创建SQL Query接口对象并传递指令将指令执行后的结果集转换为持久化类对象将多个对象集合成list返还代码示例:``` String sqlString="select * from table_test"; SQLQuery query=session.createSQLQuery(sqlString); query.addEntity("table_test",Test.class); List list=query.list();ORString sqlString="select * from table_test";List list=session.createSQLQuery(sqlString).addEntity(sqlString).list();```

HQL(Hibernate Query Language)语法结构类似SQL,它的查询实现步骤:

创建查询对象参数赋值得到查询结果```单一属性查询String hql="select name from Student where age>:tage";List<Student> list=session.createQuery(hql).setInteger("tage",20).list();for(Student s:list){    System.out.println(s);}多属性查询String hql="select name,age from Student where age>:tage";List<Student> list=session.createQuery(hql).setInteger("tage",20).list();for(Student s:list){    System.out.println("姓名为:”+s[0]+",年龄为:“+s[1]);}投影查询String hql="select new Student(name,age) from Student where age>:tage";List<Student> list=session.createQuery(hql).setInteger("tage",20).list();for(Student s:list){    System.out.println("姓名为:”+s.getName()+",年龄为:“+s.getAge());}模糊查询String hql="from Student where name like '%小_'";分组查询利用having,group by查询String hql1="from Student group by age";String hql2="select age from Student group by age";String hql3="select age from Student group by age having count(age)>1";分页查询数据量大时,分页查询可以使得前台页面更加美观Query query = session.createQuery(“from Student as c order by c.id”);query.setFirstResult(5);query.setMaxResults(15);List list = query.list();setFirstResult()设定查询结果的起始位置,从0开始数setMaxResult()设定每次检索出得最大记录数支持连接查询,在HQL中可以使用内链接、外连接、交叉连接```

QBC(Query By Criteria)使用Hibernate的Criteria API进行数据检索方式,通过session类创建Criteria实例,并调用该实例的不同方法进行数据检索。

Criteria是一个装载条件的容器(将查询条件封装为一个Criteria对象),该容器会自动解析查询条件来进行数据检索,非常适合动态查询采用HQL检索方式时,在应用程序中需要定义基于字符串形式的HQL查询语句QBC提供了检索对象的另外一种方式,它主要是由Criteria接口、Criterion接口和Expression类组成,它支持在运行时动态生成查询语句

QBC查询方式的实现步骤:

调用session的createCriteria()方法创建一个Criteria对象  设定查询条件    Expression类提供了一系列用于设定查询条件的静态方法,这些静态方法都返回Criterion实例    每个Criterion实例代表一个查询条件    通过Criteria的add()方法加入查询条件
0 0