首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate 检索形式1

2012-09-22 
Hibernate 检索方式1Hibernate检索方式(一)?Hql查询方式:以下代码通过查询条件显示数据:Listlist sessio

Hibernate 检索方式1

Hibernate检索方式(一)

?

Hql查询方式:

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

Listlist = session.createQuery(

"fromPerson p where p.personName = :personName")

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

?

Hql 的 like查询

Listlist = session.createQuery(

"fromPerson p where p.personName like :personName ")

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

?

查询指定范围值:

Listlist = session.createQuery("fromPerson p where p.id > :pid and p.id < :nid")

.setInteger("pid",newInteger(60))

.setInteger("nid",newInteger(70))

.list();

?

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

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

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

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

}

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

Person.hbm.xml定义如下:

<queryname="findPersonByname">

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

</query>

?

程序代码如下:

Listlist = session.getNamedQuery("findPersonByname")

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

Hql 翻页查询:

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

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

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

Listlist = session.createQuery("fromPerson p").setFirstResult(5)

.setMaxResults(5).list();

?

HQL投影查询:

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

?

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

?

Queryquery = session

.createQuery(

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

Listlist = query.list();

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

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

Integermaxid = (Integer) object[0];

Integerminid = (Integer) object[1];

Integersumid = (Integer) object[2];

StringpersonName = (String)object[3];

}

?

?

也可以返回类实例:

Queryquery = session.createQuery("selectnew com.test.pojo.MyPerson(p.personid,p.personName,p.email) fromPerson p where p.personName like :personName")

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

Listlist = query.list();

Iteratorite = list.iterator();

while(ite.hasNext()){

MyPersonmyperson = (MyPerson)ite.next();

}

?

?

?

?

QBC(Query By Criteria) 查询:

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

?

以下代码返回多条记录:

Listlist = session.createCriteria(Person.class)

.addOrder(

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

?

QBC显示分页:

Listlist = session.createCriteria(Person.class)

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

.setFirstResult(5)

.setMaxResults(5).list();

?

QBC检索单个对象:

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

.setMaxResults(1).uniqueResult();

?

设定查询条件:

Listlist = session.createCriteria(Person.class)

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

?

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

Listlist = session.createCriteria(Person.class)

.add(Restrictions

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

.list();

?

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

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

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

?

Listlist = session.createCriteria(Person.class)

.add(Restrictions.gt("personid",newInteger(67)))

.add(Restrictions.le("personid",newInteger(72)))

.list();

?

?

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

Listlist = session.createCriteria(Person.class)

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

?

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

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

Listlist = session.createCriteria(Person.class)

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

.list();

?

?

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

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

Listlist = session.createCriteria(Person.class)

.add(Restrictions.not(

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

.list();

?

以下代码演示了 between 用法

Listlist= session.createCriteria(Person.class)

.add(Restrictions.between("personid",

newInteger(47), newInteger(65)))

.list();

?

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

Listlist = session.createCriteria(Person.class)

.add(Restrictions.

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

?

?

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

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

Listlist = session.createCriteria(Person.class)

.add(

Restrictions.and(

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

Restrictions.ge("personid",newInteger(71))))

.list();

?

热点排行