Hibernate查询方法
来源:互联网 发布:手机mac采集器 编辑:程序博客网 时间:2024/05/16 07:48
1: QBE (Query By Example)
Criteria cri = session.createCriteria(Student.class);
cri.add(Example.create(s)); //s是一个Student对象
list cri.list();
实质:创建一个模版,比如我有一个表serial有一个 giftortoy字段,我设置serial.setgifttoy("2"),
则这个表中的所有的giftortoy为2的数据都会出来
2: QBC (Query By Criteria) 主要有Criteria,Criterion,Oder,Restrictions类组成
session = this.getSession();
Criteria cri = session.createCriteria(JdItemSerialnumber.class);
Criterion cron = Restrictions.like("customer",name);
cri.add(cron);
list = cri.list();
==============================
比较运算符
HQL运算符 QBC运算符 含义
= Restrictions.eq() 等于
<> Restrictions.not(Exprission.eq()) 不等于
> Restrictions.gt() 大于
>= Restrictions.ge() 大于等于
< Restrictions.lt() 小于
<= Restrictions.le() 小于等于
is null Restrictions.isnull() 等于空值
is not null Restrictions.isNotNull() 非空值
like Restrictions.like() 字符串模式匹配
and Restrictions.and() 逻辑与
and Restrictions.conjunction() 逻辑与
or Restrictions.or() 逻辑或
or Restrictions.disjunction() 逻辑或
not Restrictions.not() 逻辑非
in(列表) Restrictions.in() 等于列表中的某一个值
ont in(列表) Restrictions.not(Restrictions.in())不等于列表中任意一个值
between x and y Restrictions.between() 闭区间xy中的任意值
not between x and y Restrictions.not(Restrictions..between()) 小于值X或者大于值y
3: HQL
String hql = "select s.name ,avg(s.age) from Student s group by s.name";
Query query = session.createQuery(hql);
list = query.list();
....
4: 本地SQL查询
session = sessionFactory.openSession();
tran = session.beginTransaction();
SQLQuery sq = session.createSQLQuery(sql);
sq.addEntity(Student.class);
list = sq.list();
tran.commit();
5: QID
Session的get()和load()方法提供了根据对象ID来检索对象的方式。该方式被用于事先知道了要检索对象ID的情况。
Hibernate3的Like用法中 中文查询问题的解决方法2006年12月07日 星期四 09:37转自:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1340841
原本我的写法:Query repeatClientQuery=querysession.createQuery("from ClientInfo as a "
+"where a.client_name like :name" );
repeatClientQuery.setParameter("name",clientname);
查询无结果.
LIKE 'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
LIKE '%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
LIKE '%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
LIKE '_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。
LIKE '[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
LIKE '[M-Z]inger' 将搜索以字符串 inger 结尾、以从M到Z的任何单个字母开头的所有名称如 。
LIKE 'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如 MacFeather)。
直接写
String sql = "from ClientInfo as a where a.client_name like '%"+ clientname+"%'");
Query repeatClientQuery=querysession.createQuery(sql);
成功.
但是却不能查询中文,假如clientname是客户1名字的话,那么将查不到结构,解决办法:
1.用占位符:
Query query = session
.createQuery("select count(*) from Privilege p where p.name like ?");
query.setString(0, "%" + name + "%");// 注意这里不能写成setString(0," '%" + name + "%' ";否则查不出来结果,不能加‘单引号
2.修改查询编译器:
Hibernate3.0 采用新的基于ANTLR的HQL/SQL查询翻译器,在Hibernate的配置文件中,hibernate.query.factory_class属性用来选择查询翻译器。
(1)选择Hibernate3.0的查询翻译器:
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
(2)选择Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory
为了使用3.0的批量更新和删除功能,只能选择(1)否则不能解释批量更新的语句,当使用的时候出现了不支持条件输入中文的情况。选择(2)可以支持输入中文,但没法解释批量更新语句了。
- Hibernate查询方法
- Hibernate高级查询方法
- Hibernate高级查询方法
- Hibernate高级查询方法
- Hibernate查询方法
- hibernate 查询方法汇总
- hibernate查询方法对比
- hibernate 查询方法
- Hibernate查询方法比较
- Hibernate的查询方法
- Hibernate查询方法总结
- Hibernate高级查询方法
- Hibernate Hql查询方法
- Hibernate高级查询方法
- Hibernate高级查询方法
- hibernate的查询方法
- Hibernate高级查询方法
- hibernate的查询方法
- 【转】关于pthread_mutex_t的初始化
- find用法
- WCF中对路径....的访问被拒绝
- 软件测试自动化之路(8)----如何做更好的GUI Automation Testing
- CTime类的用法
- Hibernate查询方法
- 静态方法中引用非静态变量
- Oracle create tablespace 创建表空间语法详解
- Android学习笔记之AndroidManifest.xml文件解析
- 传参
- 构想“一体化”的企业信息化架构
- 基于Annotation的Hibernate3.3+Spring2.5整合开发
- 研究如何继续
- 关于spring加载applicationContext初始化bean顺序的问题