• 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()。

    ★不是每一次努力都会有收获,但是每一次收获都必须努力,这是一个不公平的不可逆转的命题★
  • 相关阅读:
    Hibernate Annotation (Hibernate 注解)
    org/objectweb/asm/Type异常解决办法
    Spring3 MVC 总结(转)
    Spring mvc 3 在controller和视图之间传递参数
    各种树tree的js控件优缺点
    Spring MVC 的请求参数获取的几种方法
    解决javax.persistence.OneToMany.orphanRemoval()Z异常办法
    ModelAndView返回自己的用法
    javax.persistence.Entity异常解决方法
    调用http://WebXml.com.cn/的webservice获取手机号段信息
  • 原文地址:https://www.cnblogs.com/lishaofei/p/2946089.html
Copyright © 2020-2023  润新知