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. 九,微信小程序开发浅谈

    最近在帮朋友做一款微信小程序(后面统称为小程序),有简单的交互,以及分享和支付功能.下面就简单的对小程序开发做一个简单的介绍,希望可以帮助大家!!! 当前的小程序我们是在windows系统里开发的,如 ...

  2. [LeetCode] Count Different Palindromic Subsequences 计数不同的回文子序列的个数

    Given a string S, find the number of different non-empty palindromic subsequences in S, and return t ...

  3. [LeetCode] Valid Parenthesis String 验证括号字符串

    Given a string containing only three types of characters: '(', ')' and '*', write a function to chec ...

  4. [LeetCode] Find Largest Value in Each Tree Row 找树每行最大的结点值

    You need to find the largest value in each row of a binary tree. Example: Input: 1 / \ 3 2 / \ \ 5 3 ...

  5. C++中 return,break,continue的用法

    引用:https://blog.csdn.net/smf0504/article/details/51315835 https://blog.csdn.net/ting_junhui/article/ ...

  6. C++11的value category(值类别)以及move semantics(移动语义)

    转载请保留以下声明 作者:赵宗晟 出处:http://www.cnblogs.com/zhao-zongsheng/p/value_categories_and_move_semantics.html ...

  7. [C#] .NET Core/Standard 2.0 编译时报“CS0579: Duplicate 'AssemblyFileVersionAttribute' attribute”错误的解决办法

    作者: zyl910 一.缘由 当创建 .NET Core/Standard 2.0项目时,VS不会像.NET Framework项目一样自动生成AssemblyInfo.cs文件. 而且,若是手工在 ...

  8. js在光标处插入内容

    //场景一 简易的页面可以这样写var range = window.getSelection().getRangeAt(0);range.insertNode(document.createText ...

  9. 实验吧_Guess Next Session&Once More(代码审计)

    Guess Next Session 看题目提示,是一道代码审计: <?php session_start(); if (isset ($_GET['password'])) { if ($_G ...

  10. STM32 - GPIO

    买了一个STM32F4的开发板,想把上面的东西重新学一下 快速过: 一.GPIO控制 void GPIO_DeInit(GPIO_TypeDef* GPIOx); //把某一个IO口恢复到默认值 /* ...