hibernate 的查询相关的

HQL适用于静态查询,QBC适用于动态查询
(1):HQL适用于静态查询
StringBuffer queryString=new StringBuffer();
Boolean ConditionFound=false;
if(loginid!=null)
{
queryString.append("lower(s.loginId)=:loginid");
ConditionFound=true;
}
if(password!=null)
{
if(ConditionFound)
queryString.append(" and ");
queryString.append(" s.password=:password ");
ConditionFound=true;
}
String fromClause=ConditionFound?" from ZhikeUser s where ":" from ZhikeUser ";
queryString.insert(0,fromClause).append(" order by s.id");
Query query= getSession().createQuery(queryString.toString());
if(loginid!=null)
query.setString("loginid", loginid);
if(password!=null)
query.setString("password", password);
List querylist=query.list();
for(int q=0;querylist!=null&&q<querylist.size();q++)
{
ZhikeUser zhikequeryuser=(ZhikeUser)querylist.get(q);
}

上面是通过sql语句的拼凑实现的,
其实类似:Query query=getSession().createQuery("from ZhikeUser s where s.loginId=:loginid and s.password=:password ");
(2):QBC适用于动态查询
Criteria crit= getSession().createCriteria(ZhikeUser.class);
ZhikeUser zhikeuserquery=new ZhikeUser();
zhikeuserquery.setLoginId("1");
Example example=Example.create(zhikeuserquery);
crit=crit.add(example);
List critlist=crit.list();
for(int cq=0;critlist!=null&&cq<critlist.size();cq++)
{
ZhikeUser zhikequeryuser=(ZhikeUser)critlist.get(cq);
}
这个没有问题通过
为什么
Criterion criterion1 =
Expression.eq("loginid",loginid);
Criterion criterion2 =
Expression.eq("password",password);
crit=crit.add(criterion1);
crit=crit.add(criterion2);
老是报告错误为什么?

2007 11:22看web 开发一些问题有感,以及对iorit2003文章分析有感!

这个也是没有问题的
Criteria crit= getSession().createCriteria(ZhikeUser.class);
ZhikeUser zhikeuserquery=new ZhikeUser();
zhikeuserquery.setLoginId("1");
Example example=Example.create(zhikeuserquery);
crit=crit.add(example);
List critlist=crit.list();
在Hibernate中队示例查询,默认情况下会排除掉示例对象中属性值为空的属性,还可以调用Example.excludeNone(排除空串值)/excludeZeros(排除零值),或者调用Example.excludeProperty方法来指定排除特定属性。
示例查询主要应用于组合查询中,比如根据用户输入的查询条件动态生成最终的查询语句,通过使用示例查询,可以避免由于查询条件过多而写的大量if判断语句。

Example.excludeNone()好像没有排除空字符串!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值