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. JavaScript, 函数是实现异步的基础

    昨天一朋友和我聊到JS中的异步和同步, 后来从异步和同步的问题中得出了函数的另一面, 觉得挺不错, 特此分享一下 ==== 追梦子: 聊天是同步还是异步 小A: 异步 小A: 和你聊还可以和别人聊 追 ...

  2. c#之监控文件结构

    如果需要知道修改文件或目录的时间,可以通过FileSystemWatcher类,这个类提供了一下应用程序可以捕获的事件,应用程序可以对事件作出响应. 使用FileSystemWatcher非常简单,首 ...

  3. [LeetCode] Subarray Sum Equals K 子数组和为K

    Given an array of integers and an integer k, you need to find the total number of continuous subarra ...

  4. [LeetCode] Longest Word in Dictionary through Deleting 删除后得到的字典中的最长单词

    Given a string and a string dictionary, find the longest string in the dictionary that can be formed ...

  5. 机器学习技法:10 Random Forest

    Roadmap Random Forest Algorithm Out-Of-Bag Estimate Feature Selection Random Forest in Action Summar ...

  6. 修改Execl中sheet名的指定字符串为指定字符串

    Sub test() Dim sheet_count As Integer Dim sheet_name, new_sheet_name, old_str, new_str As String she ...

  7. 1086: [SCOI2005]王室联邦

    1086: [SCOI2005]王室联邦 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 1554  Solved: ...

  8. bzoj 5290: [Hnoi2018]道路

    Description Solution PJDP毁青春 注意到性质:到根的道路不超过 \(40\) 条 所以我们只关系一个点上面的道路的情况就行了 设 \(f[x][i][j]\) 表示一个点 \( ...

  9. UVA11552:Fewest Flops

    发现如果只有一块就是种类的数目,也就是同种放在一起, 再考虑多块,如果违背的上面的规律,可以发现不会更优, 于是问题就是求在满足同种类放在一起的前提下,尽量使得相邻块的两端一模一样 然后dp一下就可以 ...

  10. [bzoj4823][Cqoi2017]老C的方块

    来自FallDream的博客,未经允许,请勿转载,谢谢. 挺有意思的一道题.... 看完题面比较明确是最小割,考虑怎么建图 想了比较久 突破口应该是题目中那张奇怪的图 观察这个奇怪的图和方块,很容易发 ...