zoukankan      html  css  js  c++  java
  • HibernateTemplate类的使用

    HibernateTemplate 提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。

    1. .find(String queryString); 
      queryString:hql查询语句

    String queryString = "from user";
    this.getHibernateTemplate().find(queryString);

      返回:user对象的集合


    2. .find(String queryString , Object value); 
      queryString:hql查询语句
      value:查询条件

    String queryString = "from user u where u.name=?";
    this.getHibernateTemplate().find(queryString, "test");

      返回:name属性值为“test”的对象的集合


    3. .find(String queryString, Object[] values); 
      queryString:hql查询语句
      value:查询条件数组

    String hql= "from bean.User u where u.name=? and u.password=?";
    this.getHibernateTemplate().find(hql, new String[]{"test", "123"});

      返回:name属性值为“test”并且password属性值为“123”的对象的集合

    4. .findByExample(Object exampleEntity) 
      exampleEntity:查询对象的实例

    User u=new User();    
    u.setPassword("123");
    u.setName("bb");    
    this.getHibernateTemplate().findByExample(u);  

      返回:name属性值为“bb”并且password属性值为“123”的对象的集合
      此方法查询即为sql查一张表的“and”条件查询

    5. .findByExample(Object exampleEntity, int firstResult, int maxResults) 
      exampleEntity:查询对象的实例
      firstResult:查询结果的起始行数
      maxResults:查询结果的总行数

    User u=new User();    
    u.setPassword("123");
    u.setName("cc");
    int start = 0;
    int max = 10;
    this.getHibernateTemplate().findByExample(u,start,max);

       返回:name属性值为“cc”并且password属性值为“123”,自0起共10个对象的集合(对象从0开始计数) 

    6. .findByNamedParam(String queryString , String paramName , Object value) 
      queryString:hql查询语句
      paramName:查询条件中引用占位符的名称
      value:引用占位符的值

    String queryString = "select count(*) from user u where u.name=:myName"; 
    String paramName= "myName"; 
    String value= "xiyue"; 
    this.getHibernateTemplate().findByNamedParam(queryString, paramName, value); 

       返回:name属性值为“xiyue”的对象的集合

    7. .findByNamedParam(String queryString , String[] paramNames , Object[] values) 
      queryString:hql查询语句
      paramNames:查询条件中引用占位符的名称的数组
      values:引用占位符的值的数组

    String queryString = "select count(*) from 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, paramNames, values); 

      返回:name属性值为“xiyue”,并且password属性值为“123”的对象的集合

    getSession()与getHibernateTemplate()


     

    1. 使用getSession()方法你只要继承 sessionFactory,而使用getHibernateTemplate()方法必须继承HibernateDaoSupport当然包括 sessionFactory
    2. getSession()方法是没有经过spring包装的,spring会把最原始的session给你,在使用完之后必须自己调用相应的close方法,而且也不会对声明式事务进行相应的管理,一旦没有及时关闭连接,就会导致数据库连接池的连接数溢出,而getHibernateTemplate()方法是经过spring封装的,例如添加相应的声明式事务管理,由spring管理相应的连接。
    3. 另外,由于hibernate4已经完全可以实现事务了 与spring3.1中的hibernatedao,hibernateTemplete等有冲突,所以从spring3.1里已经不提供hibernatedaosupport,hibernateTemplete了,只能用hibernate原始的方式用getSession()。

    ★不是每一次努力都会有收获,但是每一次收获都必须努力,这是一个不公平的不可逆转的命题★
  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/lishaofei/p/2946089.html
Copyright © 2011-2022 走看看