Hibernate实现模糊查询的方法
2012-05-22 11:50
573 查看
大家都知道使用本地SQL进行模糊查询用关键字 LIKE 对于在Hibernate里怎么实现呢?
一、绑定参数法:
Sql代码
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 中
Sql代码
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List result=session.createQuery("from Classes
as a where a.classno
like " '%"+OId+"%'").list();
三、模糊查询参数化
Sql代码
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 ?;//设置参数值时会自动在参数值两边加上单引号。
一、绑定参数法:
Sql代码
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();
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 中
Sql代码
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 " '%"+OId+"%'").list();
三、模糊查询参数化
Sql代码
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List result=session.createQuery("from Classes
as a where a.classno
like :name").setParameter("pid",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 ?;//设置参数值时会自动在参数值两边加上单引号。
相关文章推荐
- Hibernate实现模糊查询的方法
- Hibernate实现模糊查询的方法
- Hibernate中实现模糊查询
- Laravel5中实现模糊匹配加多条件查询功能的方法
- ajax实现动态从数据库模糊查询显示到下拉框中(ajax方法返回Dataset的例子)
- Hibernate实现limit查询方法
- 在java List中进行模糊查询的实现方法
- MySQL单表多关键字模糊查询的实现方法
- mybatis 几种实现模糊查询的方法简介
- PHP模糊查询的实现方法(推荐)
- 用hibernate的HQL(面向对象的查询语言)实现模糊查询的3种方式
- JPA通过方法名实现模糊查询
- mybatis 几种实现模糊查询的方法简介
- PHP模糊查询的实现方法
- Node.js对MongoDB数据库实现模糊查询的方法
- hibernate只查询实体类中部分属性的实现方法
- Hibernate分页的实现(支持模糊查询)
- hibernate3 实现查询的多种方法
- mybatis 几种实现模糊查询的方法简介
- hibernate查询之Criteria实现分页方法(GROOVY语法)