J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())

  当我们使用Hibernate进行数据的CRUD操作时,利用模版进行操作不失为一种方法。今天主要就HQL查询语句进行学习。

一、find(String queryString);

示例:this.getHibernateTemplate().find(“from bean.User”); 返回所有User对象

二、find(String queryString , Object value);

示例:this.getHibernateTemplate().find(“from bean.User u where u.name=?”, “test”);

或模糊查询:this.getHibernateTemplate().find(“from bean.User u where u.name like ?”, “%test%”);

返回name属性值为test的对象(模糊查询,返回name属性值包含test的对象)

三、find(String queryString, Object[] values);

示例:String hql= “from bean.User u where u.name=? and u.password=?”

this.getHibernateTemplate().find(hql, new String[]{“test”, “123”});

返回用户名为test并且密码为123的所有User对象。

四、findByExample(Object exampleEntity)

示例:

          User u=new User();
          u.setPassword("123");//必须 符合的条件但是这两个条件时并列的(象当于sql中的and)
          u.setName("bb");
          list=this.getHibernateTemplate().findByExample(u,start,max); 
  返回:用户名为bb密码为123的对象

五、findByExample(Object exampleEntity, int firstResult, int maxResults)

示例:

        User u=new User();
        u.setPassword("123");//必须符合的条件但是这两个条件时并列的(象当于sql中的and)
        u.setName("bb");
        list=this.getHibernateTemplate().findByExample(u,start,max);   

  返回:满足用户名为bb密码为123,自start起共max个User对象。(对象从0开始计数)

六、findByNamedParam(String queryString , String paramName , Object value)

  使用以下语句查询:

       String queryString = "select count(*) from bean.User u where u.name=:myName";
       String paramName= "myName";
       String value= "xiyue";
       this.getHibernateTemplate().findByNamedParam(queryString, paramName, value);
       System.out.println(list.get(0));

  返回name为xiyue的User对象的条数

七、findByNamedParam(String queryString , String[] paramName , Object[] value)

  示例:
     String queryString = "select count(*) from bean.User u where u.name=:myName and u.password=:myPassword";
      String[] paramName= new String[]{"myName", "myPassword"};
      String[] value= new String[]{"xiyue", "123"};
      this.getHibernateTemplate().findByNamedParam(queryString, paramName, value);
返回用户名为xiyue密码为123的User对象

八、findByNamedQuery(String queryName)

  示例:
    1、首先需要在User.hbm.xml中定义命名查询
       <hibernate-mapping>
                  <class>......</class>
                  <query name="queryAllUser"><!--此查询被调用的名字-->
                       <![CDATA[
                            from bean.User
                        ]]>
                  </query>
             </hibernate-mapping>
     2、如下使用查询:
         this.getHibernateTemplate().findByNamedQuery("queryAllUser");

九、findByNamedQuery(String queryName, Object value)

示例:

1、首先需要在User.hbm.xml中定义命名查询

    <hibernate-mapping>
          <class>......</class>
          <query name="queryByName"><!--此查询被调用的名字-->
        <![CDATA[ from bean.User u where u.name = ? ]]>
          </query>
     </hibernate-mapping>

2、如下使用查询:

   this.getHibernateTemplate().findByNamedQuery("queryByName", "test");

十、findByNamedQuery(String queryName, Object[] value)

示例:

1、首先需要在User.hbm.xml中定义命名查询

  <hibernate-mapping>
     <class>......</class>
     <query name="queryByNameAndPassword"><!--此查询被调用的名字-->
     <![CDATA[ from bean.User u where u.name =? and u.password =? ]]>
     </query>
   </hibernate-mapping>

2、如下使用查询:

String[] values= new String[]{“test”, “123”};

this.getHibernateTemplate().findByNamedQuery(“queryByNameAndPassword” , values);

十一、findByNamedQueryAndNamedParam(String queryName, String paramName, Object value)

示例:

1、首先需要在User.hbm.xml中定义命名查询

     <query name="queryByName"><!--此查询被调用的名字-->
     <![CDATA[ from bean.User u where u.name =:myName]]>
       </query>

2、如下使用查询:

this.getHibernateTemplate().findByNamedQuery(“queryByName” , “myName”, “test”);

十二、findByNamedQueryAndNamedParam(String queryName, String[] paramName, Object[] value)

示例:

1、首先需要在User.hbm.xml中定义命名查询

         <hibernate-mapping>
              <query name="queryByNameAndPassword"><!--此查询被调用的名字-->
                   <![CDATA[
                        from bean.User u where u.name =:myName and u.password=:myPassword
                    ]]>
              </query>
         </hibernate-mapping>
2、如下使用查询:
String[] names= new String[]{"myName", "myPassword"};
String[] values= new String[]{"test", "123"};
this.getHibernateTemplate().findByNamedQuery("queryByNameAndPassword" , names, values);

十三、findByValueBean(String queryString , Object value);

示例:

1、定义一个ValueBean,属性名必须和HSQL语句中的:后面的变量名同名,此处必须至少有两个属性,分别为myName和myPassword,使用setter方法设置属

ValueBean valueBean= new ValueBean();

valueBean.setMyName(“test”);

valueBean.setMyPasswrod(“123”);

String queryString= “from bean.User u where u.name=:myName and u.password=:myPassword”;

this.getHibernateTemplate().findByValueBean(queryString , valueBean);、 findByNamedQueryAndValueBean(String queryName , Object value);

示例:

1、首先需要在User.hbm.xml中定义命名查询

         <hibernate-mapping>
              <class>......</class>
              <query name="queryByNameAndPassword"><!--此查询被调用的名字-->
                   <![CDATA[
                        from bean.User u where u.name =:myName and u.password=:myPassword
                    ]]>
              </query>
         </hibernate-mapping>

2、定义一个ValueBean,属性名必须和User.hbm.xml命名查询语句中的:后面的变量名同名,此处必须至少有两个属性,分别为myName和myPassword,使用setter方法设置属性值后

         valueBean valueBean= new ValueBean();
         valueBean.setMyName("test");
         valueBean.setMyPasswrod("123");
        String queryString= "from bean.User u where u.name=:myName and u.password=:myPassword";
        this.getHibernateTemplate().findByNamedQueryAndValueBean("queryByNameAndPassword", valueBean);


J2EE进阶(十七)Hibernate中常用的HQL查询方法(getHibernateTemplate())的更多相关文章

  1. Spring中常用的hql查询方法(getHibernateTemplate())

    一.find(String queryString); 示例:getHibernateTemplate().find("from bean.User"); 返回所有User对象 二 ...

  2. getHibernateTemplate()(Spring中常用的hql查询方法)

    Spring中常用的hql查询方法(getHibernateTemplate()) --------------------------------- 一.find(String queryStrin ...

  3. hibernate中常用的Hql语句总结

    // HQL: Hibernate Query Language. // 特点: // >> 1,与SQL相似,SQL中的语法基本上都可以直接使用. // >> 2,SQL查询 ...

  4. hibernate中.常见的hql查询语句

    hql是非常有意识的被设计为完全面向对象的查询 基本规则: 1.hql语法类似于sql,但它后面跟的不是表名和字段名,而是类名和属性名 2.hql大小写不敏感.但是设计java类名,包名,属性名时大小 ...

  5. django中常用的数据查询方法

    https://blog.csdn.net/chen1042246612/article/details/84071006

  6. HQL语句中数据类型转换,及hibernate中createQuery执行hql报错

    一.HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基 ...

  7. ORM进阶之Hibernate中对象的三大状态解析

    ORM进阶之 ORM简单介绍 ORM进阶之Hibernate简单介绍及框架搭 ORM进阶之Hibernate的三大对象 ORM进阶之Hibernate中对象的三大状态解析 在Hibernatea中每一 ...

  8. Hibernate中evict方法和clear方法说明

    Hibernate中evict方法和clear方法说明 先创建一个对象,然后调用session.save方法,然后调用evict方法把该对象清除出缓存,最后提交事务.结果报错: Exception i ...

  9. 浅析jQuery中常用的元素查找方法总结

    本篇文章是对jQuery中常用的元素查找方法进行了详细的总结和介绍,需要的朋友参考下   $("#myELement") 选择id值等于myElement的元素,id值不能重复在文 ...

随机推荐

  1. 更换yum源

    1. 首先备份 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 使用阿里云的 ...

  2. JAVA截取字符串的几种方式

    在java中提供了很多字符串截取的方式.下面就来看看大致有几种. 1.split()+正则表达式来进行截取. 将正则传入split().返回的是一个字符串数组类型.不过通过这种方式截取会有很大的性能损 ...

  3. LOB对象在数据泵导出、导入后查询对象数量发现丢失

    问题描述:问题:源库的某个Schema使用数据泵Expdp元数据整体导出,在目标库导入且成功后,逻辑验证用户对象,发现缺失.分析查询后,缺失的对象,都是LOB类型(并不是所有的LOB都无法导入,是大部 ...

  4. 属性添加get和set方法

    出错信息: Struts Problem Report Struts has detected an unhandled exception: Messages: File: com/myHibern ...

  5. [AHOI 2009]chess 中国象棋

    Description 题库链接 给你一张 \(N\times M\) 的棋盘.要求每行每列最多放两个棋子,问总方案数. \(1\leq N,M\leq 100\) Solution 记 \(f_{i ...

  6. [SCOI2009]围豆豆

    Description Input 第一行两个整数N和M,为矩阵的边长. 第二行一个整数D,为豆子的总个数. 第三行包含D个整数V1到VD,分别为每颗豆子的分值. 接着N行有一个N×M的字符矩阵来描述 ...

  7. codeforces 523D tatistics of Recompressing Videos

    一个称为DH(DogHouse)的狗的社交网络有k台专用服务器来重新上传可爱的猫的上传视频.每个视频上传后,应该在一个(任何)服务器上重新压缩,之后才可以保存在社交网络中. 我们知道每个服务器需要一秒 ...

  8. ●UVA 10674 Tangents

    题链: https://vjudge.net/problem/UVA-10674 题解: 计算几何,求两个圆的公切线. <算法竞赛入门经典——训练指南>P266,讲得很清楚的. 大致是分为 ...

  9. hdu 4031 attack 线段树区间更新

    Attack Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)Total Subm ...

  10. UVA129 —— Krypton Factor (氪因素)

    Input and Output In order to provide the Quiz Master with a potentially unlimited source of question ...