`
liyueling
  • 浏览: 79748 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Hibernate实现模糊查询的方法

阅读更多

大家都知道使用本地SQL进行模糊查询用关键字 LIKE 对于在Hibernate里怎么实现呢?

 

一、绑定参数法:

 

Session session=HibernateUtil.getSessionFactory
().getCurrentSession(); 

session.beginTransaction();

String strSQL="from Classes as a where a.classno like :name";

Query query = session.createQuery(strSQL);
       
query.setString("name", "%"+OId+"%");
       
List result=query.list();

 
二、在面向对象的查询语言 HQL

 

Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 
   
session.beginTransaction();

List result=session.createQuery("from Classes as a where a.classno 

like " '%"+OId+"%'").list();

 

三、模糊查询参数化

 

Session session=HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();

List result=session.createQuery("from Classes as a where a.classno  

like :name").setParameter("pid",OId).list();

 

 

Hibernate模糊查询参数化的问题

 

from Project o where 1=1 and o.isDeleted=? and o.prjName like ?; query.setString(i, "%"+实际查询条件+"%"); 注意参数中第一个百分号的左边与第二个百分号的右边都没有单引号,这和平时写SQL语句是不同的,要特别关注一下。另外还应该了解一下俩点的区别

HQL:from Project o where 1=1 and PRJ_NAME like '%strCond%';//这里PRJ_NAME 应该是数据库表中的实际字段名

HQL:from Project o where 1=1 and o.PRJ_NAME like '%strCond%';//这里PRJ_NAME 应该是实体类的属性名

HQL:from Project o where 1=1 and PRJ_NAME like '?';//这里的?不视为占位参数HQL:from Project o where 1=1 and PRJ_NAME like ?;//设置参数值时会自动在参数值两边加上单引号。

3
0
分享到:
评论
1 楼 李释然 2010-04-07  
很基础的东西,很好啊。

相关推荐

Global site tag (gtag.js) - Google Analytics