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"});

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/

返回: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()。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, 对象
, 查询
, hql
, hibernate4整合问题
, hibernate4
, spring 表单查询
, 属性
, spring js 返回值
, hibernatetemplate
, gethibernatetemplate
, hql条件查询
, querystring
hibernate4  启动慢
hibernatetemplate类、hibernatetemplate、gethibernatetemplate、hibernate template、hibernate4 template,以便于您获取更多的相关知识。

时间: 2024-10-28 10:24:20

HibernateTemplate类的用法的相关文章

Python类的用法实例浅析

  本文实例讲述了Python类的用法.分享给大家供大家参考.具体如下: 先看一段代码: ? 1 2 3 4 5 6 7 8 9 #!/usr/bin/env python class Test: def __init__(self,msg="hello"): self.wel=msg print "init" def go(self,name,do): print self.wel+"go! "+name+" "+do d=

python类继承用法实例分析

  本文实例讲述了python类继承用法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

PHP邮件发送类PHPMailer用法实例详解

 本文实例讲述了PHP邮件发送类PHPMailer用法,并详细讲述了其具体的操作步骤.分享给大家供大家参考.具体步骤如下: 1.在服务器安装 sendmail 1 sudo apt-get install sendmail 2.启动 sendmail 1 sudo /etc/init.d/sendmail start 3.修改 php.ini 1 2 3 4 [mail function]  SMTP = localhost  smtp_port = 25  sendmail_from = me

java object用法-Java中object类的用法

问题描述 Java中object类的用法 class Student { String name; int age; public boolean equals (Object obj) { Student st = null; if(obj instanceof Student) st =(Student)obj; else return false; if(st.name==this.name&&st.age==this.age) return true; else return fa

ThinkPHP进程计数类Process用法实例详解_php实例

本文实例讲述了ThinkPHP进程计数类Process用法.分享给大家供大家参考.具体如下: 项目中有一个需求:由于某一后台任务比较占带宽,所以要限制进程数.花了点时间,写了类,目前版本功能比较简单. Process.class.php文件如下: <?php /** * Process * * @package * @version $id$ * @copyright 2005-2011 SUCOP.COM * @author Dijia Huang <huangdijia@gmail.com

PHP多线程类及用法实例_php技巧

本文实例讲述了PHP多线程类及用法.分享给大家供大家参考.具体分析如下: 一般来说可通过WEB服务器来实现PHP多线程功能,当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程. 但不管怎么样,它还是能满足我们的一些需要的,在需要类似多线程的功能方面还是可以采用这个类,代码如下: 复制代码 代码如下: /** * @title: PHP多线程类(Thread) * @version: 1.0 * * PHP多线程应用示例: * requ

PHP实现的简单分页类及用法示例_php技巧

本文实例讲述了PHP实现的简单分页类及用法.分享给大家供大家参考,具体如下: <?php /* * 使用: * $page = new Page(连接符,查询语句,当前页码,每页大小,页码符) * 连接符:一个MYSQL连接标识符,如果该参数留空,则使用最近一个连接 * 查询语句:SQL语句 * 当前页码:指定当前是第几页 * 每页大小:每页显示的记录数 * 页码符:指定当前页面URL格式 * * 使用例子: * $sql = "select * from aa"; * $pag

Android中TelephonyManager类的用法案例详解_Android

本文以案例形式分析了Android中TelephonyManager类的用法.分享给大家供大家参考.具体如下: 目录结构: main.xml布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="ve

Joomla语言翻译类Jtext用法分析_php实例

本文实例讲述了Joomla语言翻译类Jtext用法.分享给大家供大家参考,具体如下: 基本使用方法: Jtext是Joomla中实现多语言翻译的一个对象,最基本的使用方法如下: Jtext::_('LANGUAGE CODE'); 如果是作为变量的话,则直接使用,如: $var = Jtext::_('LANGUAGE CODE'); 如果需要显示出来,可以用echo的命令让它显示,这种方式在模板文件中是最常见的,如: echo Jtext::_('LANGUAGE CODE'); 语言包文件: