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. spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求

    spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求 有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想 ...

  2. ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

    ASP.NET Core是微软新推出支持跨平台.高性能.开源的开发框架,相比起原有的ASP.NET来说,ASP.NET Core更适合开发现代应用程序,如跨平台.Dorker的支持.集成现代前端开发框 ...

  3. codevs 1054 电梯

    1054 电梯 提交地址:http://codevs.cn/problem/1054/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver     题目描述 D ...

  4. POJ 3276 Face The Right Way

    Description Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them are facing ...

  5. java的泛型

    泛型概述 先看下面的代码: ArrayList al1 = new ArrayList(); ArrayList al2 = new ArrayList(); al1.add("hello& ...

  6. Python作业之购物车

    作业之购物车 购物车的要求如下: 输入总金额 选择购买的商品,金额足够时,把选择的商品添加到购物车,金额不足时,进行提示,商品将不会添加到购物车 随时可以退出程序,同时输出已购买的商品 具体代码如下: ...

  7. class-map与policy-map 配置与qos模版

    将subnet-a 与subnet-b 归入类class1 中.Router1(config)# ip access-list extended subnet-a Router1(config-std ...

  8. @RequestBody和@ModelAttribute注解

    一 .@RequestBody @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象.然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify( ...

  9. JsonArray转List,list转json字符串

    JsonArray data = object.getAsJsonArray("data"); Gson gson =new Gson(); List<Object> ...

  10. 数组的遍历你都会用了,那Promise版本的呢

    这里指的遍历方法包括:map.reduce.reduceRight.forEach.filter.some.every因为最近要进行了一些数据汇总,node版本已经是8.11.1了,所以直接写了个as ...