`

Hibernate 检索方式1

阅读更多

Hibernate 检索方式(一)

 

Hql 查询方式:

以下代码通过查询条件显示数据:

List list = session.createQuery(

"from Person p where p.personName = :personName" )

.setString( "personName" , "scott" ).list();

 

Hql like 查询

List list = session.createQuery(

"from Person p where p.personName like :personName " )

.setString( "personName" , "%a%" ).list();

 

查询指定范围值:

List list = session.createQuery( "from Person p where p.id > :pid and p.id < :nid" )

.setInteger( "pid" , new Integer(60))

.setInteger( "nid" , new Integer(70))

.list();

 

for ( int i=0;i<list.size();i++){

Person person = (Person)list.get(i);

System. out .println( "--- id =" +person.getPersonid());

System. out .println( "--- name=" +person.getPersonName());

}

在映射文件中定义命名查询语句

Person.hbm.xml 定义如下 :

< query name = "findPersonByname" >

<![CDATA[ from Person p where p.personName like :name ]]>

</ query >

 

程序代码如下 :

List list = session. getNamedQuery ( "findPersonByname" )

.setString( "name" , "%a%" ).list();

Hql 翻页查询:

setFirstResult(int firsResult): 设定从哪个对象开始检索,参数表示这个对象在查询结果中的索引位置 , 索引起始值为 0.

setmaxResult(int maxResult): 设定一次最多检索出的对象数目 .

以下示例演示了翻页操作 :

List list = session.createQuery( "from Person p" ).setFirstResult(5)

.setMaxResults(5).list();

 

HQL 投影查询 :

投影查询是指查询结果仅包括部分实体或者实体的部分属性 . 投影是通过 select 关键字来实现的 .

 

Hql 投影查询中使用 聚合函数:

 

Query query = session

.createQuery(

"select max(id) as max,min(id) as min ,sum(id) as sum ,personName from Person group by personName order by personName desc" );

List list = query.list();

for ( int i = 0; i < list.size(); i++) {

Object[] object = (Object[]) list.get(i);

Integer maxid = (Integer) object[0];

Integer minid = (Integer) object[1];

Integer sumid = (Integer) object[2];

String personName = (String)object[3];

}

 

 

也可以返回类实例 :

Query query = session.createQuery( "select new com.test.pojo.MyPerson(p.personid,p.personName,p.email) from Person p where p.personName like :personName" )

.setString( "personName" , "%a%" );

List list = query.list();

Iterator ite = list.iterator();

while (ite.hasNext()){

MyPerson myperson = (MyPerson)ite.next();

}

 

 

 

 

QBC (Query By Criteria) 查询:

Criteria 接口, Criterion 接口和 Expression 类组成。它支持在运行时动态产生查询语句。

 

以下代码返回多条记录 :

List list = session.createCriteria(Person. class )

.addOrder(

Order. desc ( "personName" )).list();

 

QBC 显示分页 :

List list = session.createCriteria(Person. class )

.addOrder(Order. desc ( "personName" ))

.setFirstResult(5)

.setMaxResults(5).list();

 

QBC 检索单个对象 :

Person person = ( Person ) session.createCriteria( Person . class )

.setMaxResults(1).uniqueResult();

 

设定查询条件 :

List list = session .createCriteria(Person. class )

.add(Restrictions. eq ( "personName" , "jack" )).list();

 

以下语句查询不等于 “ jack” 的记录

List list = session.createCriteria(Person. class )

. add (Restrictions

. not (Restrictions. eq ( "personName" , "jack" )))

.list();

 

以下语句查询指定范围值的记录 :

(gt() 大于 , ge() 大于等于 , lt() 小于 , le() 小于等于 )

( 查询 personid 大于 67 且小于 72 的记录 )

 

List list = session.createCriteria(Person. class )

.add(Restrictions. gt ( "personid" , new Integer(67)))

.add(Restrictions. le ( "personid" , new Integer(72)))

.list();

 

 

以下语句查询 Person 表中为空的那些记录 :

List list = session.createCriteria(Person. class )

.add(Restrictions. isNotNull ( "tel" )).list();

 

以下代码返回 in( ) 列表中相匹配的那些记录

String[] personName = { "scott" , "mike" };

List list = session.createCriteria(Person. class )

.add(Restrictions. in ( "personName" , personName))

.list();

 

 

以下代码返回不等于 in( ) 列表中的那些记录

String[] personName = { "scott" , "mike" };

List list = session.createCriteria(Person. class )

.add(Restrictions. not (

Restrictions. in ( "personName" , personName)))

.list();

 

以下代码演示了 between 用法

List list = session.createCriteria(Person. class )

.add(Restrictions. between ( "personid" ,

new Integer(47), new Integer(65)))

.list();

 

以下代码演示了字符串模糊查询 :

List list = session.createCriteria(Person. class )

.add(Restrictions.

like ( "personName" , "a" , MatchMode. ANYWHERE )). list ();

 

 

以下代码演示了逻辑与 的用法 .( 返回 person 表中

pesonName 为 “ jack” 并且 personid 大于 71 的记录 )

List list = session.createCriteria(Person. class )

.add(

Restrictions. and (

Restrictions. eq ( "personName" , "jack" ),

Restrictions. ge ( "personid" , new Integer(71))))

.list();

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics