SSH与SSM学习之hibernate13——HQL查询

来源:互联网 发布:超级淘宝店txt下载 编辑:程序博客网 时间:2024/06/11 12:51

  • SSH与SSM学习之hibernate13HQL查询
    • 一hibernate查询说明
    • 二HQL查询
    • 三基本查询
      • 1 示例代码
      • 2 查询结果
    • 四条件查询条件直接写死
      • 1 示例代码
      • 2 查询结果
    • 五条件查询使用 占位符
      • 1 示例代码
      • 2 查询结果
    • 六条件查询使用 命名占位符
      • 1 示例代码
      • 2 查询结果
    • 七分页查询
      • 1 示例代码
      • 2 查询结果

SSH与SSM学习之hibernate13——HQL查询

一、hibernate查询说明

hibernate查询,主要使用以下三种

  1. HQL查询-hibernate Query Language(主要用于多表查询,但不复杂时使用)

  2. Criteria查询(主要用于单表条件查询)

  3. 原生SQL查询(复杂的业务查询)


二、HQL查询

HQL查询-hibernate Query Language(主要用于多表查询,但不复杂时使用)

Hibernate独家查询语言,属于面向对象的查询语言


三、基本查询

这个基本查询是查询全部的

3.1 示例代码

/** * HQL基本查询 */@Testpublic void qhlBaseDemo(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------基本查询---------------    //查询全部,如果User类有不能唯一确定,那么需要完整类名    String sql = "from User";    Query query = session.createQuery(sql);    //多个结果可以使用list()    List<User> users = query.list();    //如果是一个唯一的结果,那么可以使使用    //query.uniqueResult();    //打印集合    System.out.println(users);    //-----------------------------------------    //5.关闭资源    session.close();}

3.2 查询结果

Hibernate:     select        user0_.id as id1_0_,        user0_.name as name2_0_,        user0_.age as age3_0_     from        tb_user2 user0_[User{id=1, name='小明', age=20}, User{id=2, name='xiaoming', age=19}, User{id=3, name='mingming', age=22}, User{id=4, name='mingge', age=20}, User{id=5, name='xx', age=99}, User{id=6, name='wiming', age=20}]

四、条件查询,条件直接写死

4.1 示例代码

/** * HQL条件查询,条件直接写死 */@Testpublic void qhlConditionDemo1(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------条件查询---------------    //查询全部,如果User类有不能唯一确定,那么需要完整类名    //这里id是User类的id    String sql = "from User where id = 1";    Query<User> query = session.createQuery(sql);    //如果是一个唯一的结果,那么可以使使用    User user = query.uniqueResult();    //打印    System.out.println(user);    //-----------------------------------------    //5.关闭资源    session.close();}

4.2 查询结果

Hibernate:     select        user0_.id as id1_0_,        user0_.name as name2_0_,        user0_.age as age3_0_     from        tb_user2 user0_     where        user0_.id=1User{id=1, name='小明', age=20}

五、条件查询,使用 ?占位符

5.1 示例代码

/** * HQL条件查询,使用 ?占位符 */@Testpublic void qhlConditionDemo2(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------条件查询---------------    //查询全部,如果User类有不能唯一确定,那么需要完整类名    //这里id是User类的id    String sql = "from User where id = ?";    Query<User> query = session.createQuery(sql);    //添加参数,下标从0开始    query.setParameter(0,1);    //如果是一个唯一的结果,那么可以使使用    User user = query.uniqueResult();    //打印    System.out.println(user);    //-----------------------------------------    //5.关闭资源    session.close();}

5.2 查询结果

Hibernate:     select        user0_.id as id1_0_,        user0_.name as name2_0_,        user0_.age as age3_0_     from        tb_user2 user0_     where        user0_.id=?User{id=1, name='小明', age=20}

六、条件查询,使用 命名占位符

6.1 示例代码

/** * HQL条件查询,使用 命名占位符 */@Testpublic void qhlConditionDemo3(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------条件查询---------------    //查询全部,如果User类有不能唯一确定,那么需要完整类名    //这里id是User类的id    String sql = "from User where id = :uid";    Query<User> query = session.createQuery(sql);    //添加参数    query.setParameter("uid",1);    //如果是一个唯一的结果,那么可以使使用    User user = query.uniqueResult();    //打印    System.out.println(user);    //-----------------------------------------    //5.关闭资源    session.close();}

6.2 查询结果

Hibernate:     select        user0_.id as id1_0_,        user0_.name as name2_0_,        user0_.age as age3_0_     from        tb_user2 user0_     where        user0_.id=?User{id=1, name='小明', age=20}

七、分页查询

7.1 示例代码

/** * HQL分页 */@Testpublic void qhlPageDemo(){    //1.创建session    Session session = HibernateUtils.openSession();    //------------------条件查询---------------    //查询全部,如果User类有不能唯一确定,那么需要完整类名    //这里id是User类的id    String sql = "from User";    Query<User> query = session.createQuery(sql);    //从第0条开始    query.setFirstResult(0);    //查询3条数据    query.setMaxResults(3);    List<User> users = query.list();    //打印    System.out.println(users);    //-----------------------------------------    //5.关闭资源    session.close();}

7.2 查询结果

Hibernate:     select        user0_.id as id1_0_,        user0_.name as name2_0_,        user0_.age as age3_0_     from        tb_user2 user0_ limit ?[User{id=1, name='小明', age=20}, User{id=2, name='xiaoming', age=19}, User{id=3, name='mingming', age=22}]
原创粉丝点击