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. 简述SharePoint designer 工作流实现用户撤回申请得解决方案,how to revoke/recall application in SharePoint designer workflow

    在工作中很容易碰到用户提出,需要可以撤回申请得需求.有这么几种实现方法. 方案一:designer中加一个parallel(平行)得anction, 然后在里面添加两个平行运行得审批 第一个是给真正得 ...

  2. Windows下使用PSCP从Linux下载或上传文件

    1. 先下载putty包,然后解压 https://the.earth.li/~sgtatham/putty/latest/w64/putty.zip 2. 下载Linux文件到当前目录 PSCP.e ...

  3. SSO-单点统一登录系统的设计与实现

    本文主要基于web类应用展开讨论,提供的是一种通用机制和方法,所以不论何种技术栈都可进行相应的具体实现. 实现目标 可以在相同或跨域环境下完成各应用的统一登录/注销 方案原理 本质上是采用了web应用 ...

  4. [LeetCode] Find Pivot Index 寻找中枢点

    Given an array of integers nums, write a method that returns the "pivot" index of this arr ...

  5. openfire3.10.0 在mac10.10.3,jdk1.8中,安装后无法打开的解决方案

    先展示一下错误 解决方案很简单,卸载jdk,openfire之后,重新安装就行 步骤如下: (1)卸载jdk1.8 终端依次执行下面的命令 sudo rm -fr /Library/Internet\ ...

  6. webpack模块化管理和打包工具

    Webpack简介 webpack是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等到实际 需要的 ...

  7. 再深刻理解下web3.js中estimateGas如何计算智能合约消耗的gas量

    我们可使用web3.js框架的estimateGas函数获得一个以太坊智能合约的Gas估计值 ,通过执行一个消息调用或交易,该消息调用或交易直接在节点的VM中执行,并未在区块链中确认,函数会返回估算使 ...

  8. ●BZOJ 4176 Lucas的数论

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4176 题解: 莫比乌斯反演,杜教筛 首先有这么一个结论: 令d(n)表示n的约数的个数(就是 ...

  9. ●BZOJ 3512 DZY Loves Math IV

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3512 题解: $$求ANS=\sum_{i=1}^{N}\sum_{j=1}^{M}\phi ...

  10. ●BZOJ 4822 [Cqoi2017]老C的任务

    题链: https://www.luogu.org/problemnew/show/P3755 (洛谷上数据范围给全了的) 题解: 树状数组,离线询问 (本来想弄一个二维树状数组/二维RMQ,然后直接 ...