初学Hibernate之Query扩展

1、hql参数化查询,不明确值类型的用setParameter方法;明确查询结果为一条记录的用uniqueResult方法查询

注意,参数化查询中方法setString 或 setParameter如果使用索引方式赋值,索引值从0开始,区别JDBC

public void func1(){
    Session session=HibernateUtils.getSession();
    session.beginTransaction();
    String hql="from Customer where name=:name";
    Query query=session.createQuery(hql);
    //传参数
    //query.setString("name", "Tom");或者下面  query.setParameter("name", "Tom");
    //List<Customer>cusList=query.list();   //如果明确知道查询结果就一条记录,则用下面方法  Customer customer=(Customer) query.uniqueResult();
    session.getTransaction().commit();
    session.close();
    //System.out.println(cusList.get(0).getName());  System.out.println(customer.getName());
}

2、hql分页查询

public void func2(){
    Session session=HibernateUtils.getSession();
    session.beginTransaction();
    Query query=session.createQuery("from Customer");
    //设置起始行索引
    query.setFirstResult(1);
    //设置最多返回记录数量
    query.setMaxResults(2);
    List<Customer>cusList=query.list();
    session.getTransaction().commit();
    session.close();
    System.out.println(cusList.get(0).getName()+","+cusList.get(0).getId());
    System.out.println(cusList.get(1).getName()+","+cusList.get(1).getId());

}

3、qbc分页查询

public void func1(){
    Session session=HibernateUtils.getSession();
    session.beginTransaction();

    Criteria criteria=session.createCriteria(Customer.class);
    //设置起始行索引
    criteria.setFirstResult(1);
    //设置最多返回记录数量
    criteria.setMaxResults(2);
    List<Customer>cusList=criteria.list();

    System.out.println(cusList.get(0).getName()+","+cusList.get(0).getId());
    System.out.println(cusList.get(1).getName()+","+cusList.get(1).getId());
    session.getTransaction().commit();
    session.close();
}

4、qbc条件查询

public void func2(){
    Session session=HibernateUtils.getSession();
    session.beginTransaction();
    Criteria criteria=session.createCriteria(Customer.class);
    //设置查询条件,name等于Tom的
    criteria.add(Restrictions.eq("name", "Tom"));
    //已明确查询结果为一条记录
    Customer customer=(Customer) criteria.uniqueResult();

    session.getTransaction().commit();
    session.close();
    System.out.println(customer.getName());
}

5、qbc复杂条件查询

public void func3(){
    Session session=HibernateUtils.getSession();
    session.beginTransaction();
    Criteria criteria=session.createCriteria(Customer.class);
    //设置查询条件,name等于Tom的
    criteria.add(Restrictions.eq("name", "Jack")).add(Restrictions.or(Restrictions.gt("id", 3), Restrictions.eq("city", "上海")));
    List<Customer> cusList=criteria.list();

    session.getTransaction().commit();
    session.close();
    for (int i = 0; i < cusList.size(); i++) {
        System.out.println(cusList.get(i).getId());
    }
}
时间: 2024-11-06 07:18:12

初学Hibernate之Query扩展的相关文章

hibernate使用Query进行查询

本文主要探讨hibernate的简单查询,主要是使用Query进行的查询. 1.首先看下annotation的API中关于查询的描述 2.3. 映射查询 2.3.1. 映射EJBQL/HQL查询 使用注解还可以映射EJBQL/HQL查询. @NamedQuery 和@NamedQueries是可使用在类和包上的注解. 但是它们的定义在session factory/entity manager factory范围中是都可见的. 命名式查询通过它的名字和实际的查询字符串来定义. javax.per

Hibernate 入门----Query,Criteria,SQLQuery

hibernate 的QueryHQL(Hibernate Query Language)是一种Hibernate专用的查询语句,基于面向对象的模式,将SQL语句转化成对象的操作格式.list() 查询多条 @Test public void query(){ // sql : select 列名 from 表明; // hql : select 属性名 from 类名; // select 别名.属性 from 类名 as 别名; String hql = "from User";

hibernate中Query的list和iterator区别(续)

打开cache后query的list和iterator方法区别 1.ehcache.xml文件 <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">

【Hibernate】---Query、Criteria、SQLQuery

一.核心配置文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.d

初学Hibernate

Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作.除配置文件,映射文件和持久化类外,Hibernate的核心组件包括以下几部分:a)Configu

初学Hibernate心得/

看了几天的心得记录一下 1.配置hibernate 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/hibernate-config

初学Hibernate主键生成策略

具有业务含义的主键叫自然主键:随机生成,不具备业务含义的字段作为主键,叫代理主键. 在表与POJO类关系映射文件XXX.hbm.xml中,可通过配置id元素下generator节点的class属性指定数据表主键生成策略<generator class="生成策略"></generator>:所谓主键生成策略就是hibernate怎样管理表的主键 主键生成策略:1~4自动增长(1.2.3······),代理主键:5主键为字符串,代理主键:6一般用于自然主键,需要在

Hibernate之Query接口的uniqueResult()方法

如果查询返回多个值用list()方法 public void testQuery(){ Configuration config = new Configuration().configure(); SessionFactory factory = config.buildSessionFactory(); //创建SessionFactory Session session = factory.openSession();        //创建Session session.beginTra

初学Hibernate心得体会

在初次使用Hibernate时我点开了百度百科大致了解了下Hibernate到底是个什么 . Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任. 工欲善其