zoukankan      html  css  js  c++  java
  • 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]);
    }

  • 相关阅读:
    Debug相关的一些小技巧
    <Information Storage and Management> 读书笔记 之二
    <<Information Storage and Management>>读书笔记 之三
    LINQ to SQL语句(2)之Select/Distinct【转】
    Asp.Net MVC实践 探索UrlRouting并分析UrlHelper (基于ASP.NET MVC Preview 3) 【转】
    MVC学习之分页 【转】
    在 ASP.NET MVC 项目中使用 WebForm 【转】
    Asp.net Mvc Codeplex Preview 5 第三篇 实现Action参数传递繁杂类型 【转】
    jQuery入门[1]-构造函数 【转】
    LINQ to SQL语句(1)之Where【转】
  • 原文地址:https://www.cnblogs.com/a1280055207/p/2854261.html
Copyright © 2011-2022 走看看