Hibernate笔记:HQL查询总结(二)——条件查询(转)

条件查询

 

1.拼字符串

where条件后面,可以用字符串连接组成条件

String hql = " select s.id, s.name from Student s where s.name like '%1%'";

Query query = session.createQuery(hql);

List list = query.list();

for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

 

2.可以采用 ?来传递参数(索引从0开始)

(1)分开设值

//条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数String hql = "from Users where name=? and passwd=?";

Query query = session.createQuery(hql);

     

//第1种方式

//query.setString(0, "name1");

//query.setString(1, "password1");

 

//第2种方式

query.setParameter(0"name1",Hibernate.STRING);

query.setParameter(1"password1",Hibernate.STRING);

List<Users> list = query.list();

 

for(Users users : list){

    System.out.println(users.getId());

 

(2)方法链

List students = session.createQuery("select s.id, s.name from Student s

                where s.name like ?")
                    .setParameter(0, "%1%")
                    .list();

for(Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

 

3.使用 :参数名称的方式传递参数值

//条件查询,自定义索引名(参数名):username,:password.通过

//setString,setParameter设置参数

String hql = "from Users where name=:username and passwd=:password";

Query query = session.createQuery(hql);

 

//第1种方式

//query.setString("username", "name1");

//query.setString("password", "password1");

 

//第2种方式,第3个参数确定类型

query.setParameter("username""name1",Hibernate.STRING);

query.setParameter("password""password1",Hibernate.STRING);

 

//第3种方式

//query = query.setParameter("username""name1").setParameter

//("password""password1");

 

List<Users> list = query.list();

 

for(Users users : list){

    System.out.println(users.getId());

 

4.支持谓词in,需要使用setParameterList进行参数传递

List students = session.createQuery("select s.id, s.name from Student s

         where s.id in(:myids)")
         .setParameterList("myids", new Object[]{1, 2, 3, 4, 5})
         .list();
   
for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

 

5.在HQL中使用数据库的函数

List students = session.createQuery("select s.id, s.name from Student s

         where date_format(s.createTime, '%Y-%m')=?")
         .setParameter(0, "2010-12")
         .list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}

 

6.查询时间段的数据

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   
List students = session.createQuery("select s.id, s.name from Student s

         where s.createTime between ? and ?")
         .setParameter(0, sdf.parse("2010-12-01 00:00:00"))
         .setParameter(1, sdf.parse("2010-12-31 23:59:59"))
               .list();
for (Iterator iter=students.iterator(); iter.hasNext();) {
    Object[] obj = (Object[])iter.next();
    System.out.println(obj[0] + "," + obj[1]);
}


转自http://www.cnblogs.com/a1280055207/archive/2013/01/10/2854261.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值