Hibernate查询

来源:互联网 发布:python字符串索引 编辑:程序博客网 时间:2024/06/04 18:55

hibernate有三种查询:

第一种是HQL(Hibernate Query Language):session.createQuery("")

基本查询:我在下面贴下我自己写的代码:

package com.zking.test;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;


import com.zking.entity.Person;


public class ClassTest {


private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;


@Before
public void before(){
Configuration configuration=new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}

@After
public void after(){
//提交
transaction.commit();
session.close();
sessionFactory.close();
}
@Test
public void test1(){
//查询所有
// List<Person> persons= session.createQuery("from Person").list();
// for (Person person : persons) {
// System.out.println("打印Person的数据:"+person);
// }
//查询某一列的(只从数据库拿名字,而不是从数据库把数据都拿过来只是显示名字)
// List<String> names= session.createQuery("select pname from Person").list();
// for (String string : names) {
// System.out.println(string);
// }


// 查询某几列的值,只能给Object的数组  查询结果来源于多张表的时候 
// List<Object[]> values= session.createQuery("select pname,page from Person").list();
// for (Object[] objects : values) {
// String pname=objects[0].toString();
// int page=Integer.parseInt(objects[1].toString());
// System.out.println("pname :"+pname+" "+" page: "+page); 
// }

//构造查询  在Person类里面必须要有pname和page的构造方法,才能这么写
// List<Person> persons= session.createQuery("select new Person(pname,page) from Person").list();
// for (Person person : persons) {
// System.out.println(person);
// }

//带条件查询
//查询年龄13-19之间
//直接设值
// List<Person> persons= session.createQuery("from Person where page between 13 and 19").list();
//索引方式
// List<Person> persons= session.createQuery("from Person where page between ? and ?").setInteger(0,13).setInteger(1,19).list();
//命名参数
// List<Person> persons= session.createQuery("from Person where page between :min and :max").setInteger("min", 13).setInteger("max", 19).list();
// for (Person person : persons) {
// System.out.println(person);
// }
//聚合函数
// int page= Integer.parseInt(session.createQuery("select max(page) from Person").uniqueResult().toString());
// System.out.println(page);

//分页
// int pageNo=2;
// int pageSize=2;
// List<Person> persons= session.createQuery("from Person").setFirstResult((pageNo-1)*pageSize).setMaxResults(pageSize).list();
// for (Person person : persons) {
// System.out.println(person);
// }

//排序
//根据年龄从高到低
// List<Person> persons= session.createQuery("from Person order by page desc").list();
// for (Person person : persons) {
// System.out.println(person);
// }

//对象导航
List<Product> products= session.createQuery("from Product p where p.category.c_name='笔记本'").list();

}
}

第二种是QBC(标准查询):session.createCriteria()

第三种是原生态SQL