Hibernate HQL 查询API

来源:互联网 发布:供应链管理软件 java 编辑:程序博客网 时间:2024/06/05 17:26

package cn.com.leadfar.hibernate;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import junit.framework.TestCase;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class HQLFind extends TestCase {

public  void testQuery01(){

//默认读取根路径下面的hibernate.cfg.xml文件

Configuration  cfg=new Configuration().configure();

//创建sessionfactory

SessionFactory factory=cfg.buildSessionFactory();

//创建hibernate Session

Session session=factory.openSession();

//开启事物

try{

session.beginTransaction();

Query query=(Query)session.createQuery("from Person");

List list=query.list();

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

Person p= (Person) iterator.next();

System.out.println(p.getId()+" "+p.getName()+" "+p.getQq());

}

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

session.getTransaction().rollback();

}finally{

session.close();

}

}

public  void testQuery02(){

//默认读取根路径下面的hibernate.cfg.xml文件

Configuration  cfg=new Configuration().configure();

//创建sessionfactory

SessionFactory factory=cfg.buildSessionFactory();

//创建hibernate Session

Session session=factory.openSession();

//开启事物

try{

session.beginTransaction();

//基于索引的参数 0-base

Query query=(Query)session.createQuery(" select  p from Person p where p.name like? and p.age<? and age>?");

query.setParameter(0, "%小%");

query.setParameter(1,88888 );

query.setParameter(2, 25656);

List list=query.list();

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

Person p= (Person) iterator.next();

System.out.println(p.getId()+" "+p.getName()+" "+p.getQq());

}

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

session.getTransaction().rollback();

}finally{

session.close();

}

}

public  void testQuery03(){

//默认读取根路径下面的hibernate.cfg.xml文件

Configuration  cfg=new Configuration().configure();

//创建sessionfactory

SessionFactory factory=cfg.buildSessionFactory();

//创建hibernate Session

Session session=factory.openSession();

//开启事物

try{

session.beginTransaction();

Query query=(Query)session.createQuery

("select p.id,p.name,p.age from Person p where p.name like :pn and p.age > :lage and p.age < :rage");

query.setParameter("pn""%三%");

query.setParameter("lage", 1120);

query.setParameter("rage", 111160);

List list=query.list();

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

Object[] p = (Object[]) iterator.next();

System.out.println(p[0]+","+p[1]+","+p[2]);

}

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

session.getTransaction().rollback();

}finally{

session.close();

}

}

public void testQuery04() throws Exception{

Configuration cfg = new Configuration().configure();

SessionFactory factory = cfg.buildSessionFactory();

Session session = factory.openSession();

try{

session.beginTransaction();

//基于命名的参数 

Query query = session.createQuery("select p from Person p where p.name like :pn and p.age > :lage and p.age < :rage");

query.setParameter("pn""%1%");

query.setParameter("lage", 20);

query.setParameter("rage", 60);

List list = query.list();

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

Person p = (Person) iterator.next();

System.out.println(p.getId()+","+p.getName());

}

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

session.getTransaction().rollback();

}finally{

session.close();

}

}

public void testQuery05() throws Exception{

Configuration cfg = new Configuration().configure();

SessionFactory factory = cfg.buildSessionFactory();

Session session = factory.openSession();

try{

session.beginTransaction();

Query query = session.createQuery("select p.id,p.name from Person p where p.id in (:ids)");

List ids = new ArrayList();

ids.add(1);

ids.add(2);

ids.add(3);

//ids不能为null或empty

query.setParameterList("ids", ids);

List list = query.list();

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

Object[] p = (Object[]) iterator.next();

System.out.println(p[0]+","+p[1]);//查询数据库中id为前三个的前两个字段值

}

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

session.getTransaction().rollback();

}finally{

session.close();

}

}

public void testQuery06() throws Exception{

Configuration cfg = new Configuration().configure();

SessionFactory factory = cfg.buildSessionFactory();

Session session = factory.openSession();

try{

session.beginTransaction();

Query query = session.createQuery("select p from Person p where p.id = ?");

query.setParameter(0, 10);//查询id为10的属性

/**

 * 0条结果 - null

 * 1条结果 - select的类型

 * 多于1条结果 - 报异常

 */

Person p = (Person)query.uniqueResult();

if(p != null){

System.out.println(p.getId()+","+p.getName());

}

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

session.getTransaction().rollback();

}finally{

session.close();

}

}

public  void testQuery07(){

/*

 * 查询数据库中共有多少条记录

 * 

 */

//默认读取根路径下面的hibernate.cfg.xml文件

Configuration  cfg=new Configuration().configure();

//创建sessionfactory

SessionFactory factory=cfg.buildSessionFactory();

//创建hibernate Session

Session session=factory.openSession();

//开启事物

try{

session.beginTransaction();

Query query=(Query)session.createQuery("select count(*)from Person");//查询数据库中共有多少条记录

Long l=(Long)query.uniqueResult();

System.out.println(l);

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

session.getTransaction().rollback();

}finally{

session.close();

}

}

public  void testQuery08(){

/*

 * 数据库实现分页技术

 * 

 */

//默认读取根路径下面的hibernate.cfg.xml文件

Configuration  cfg=new Configuration().configure();

//创建sessionfactory

SessionFactory factory=cfg.buildSessionFactory();

//创建hibernate Session

Session session=factory.openSession();

//开启事物

try{

session.beginTransaction();

Query query=(Query)session.createQuery("from Person");

query.setFirstResult(10);

query.setMaxResults(20);

List list=(List)query.list();

for (Iterator iterator = list.iterator(); iterator.hasNext();) {

Person p= (Person) iterator.next();

System.out.println(p.getId()+"  "+p.getName()+"  "+p.getQq());

}

session.getTransaction().commit();

}catch(Exception e){

e.printStackTrace();

session.getTransaction().rollback();

}finally{

session.close();

}

}

}

原创粉丝点击