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