3、条件查询【重要】
* 可以采用拼字符串的方式传递参数
* 可以采用 ?来传递参数(索引从0开始)
* 可以采用 :参数名 来传递参数
* 如果传递多个参数,可以采用setParamterList方法
* 在hql中可以使用数据库的函数,如:date_format
参见:SimpleConditionQueryTest.java
* 可以采用拼字符串的方式传递参数
* 可以采用 ?来传递参数(索引从0开始)
* 可以采用 :参数名 来传递参数
* 如果传递多个参数,可以采用setParamterList方法
* 在hql中可以使用数据库的函数,如:date_format
参见:SimpleConditionQueryTest.java
- ================================================================
- A:
- //可以拼字符串
- Liststudents=session.createQuery("selects.id,s.namefromStudentswheres.namelike'%1%'").list();
- for(Iteratoriter=students.iterator();iter.hasNext();){
- Object[]obj=(Object[])iter.next();
- System.out.println(obj[0]+","+obj[1]);
- }
- =============================================================
- B.
- Queryquery=session.createQuery("selects.id,s.namefromStudentswheres.namelike?");
- //query.setParameter(0,"%1%");
- //Liststudents=query.list();
- //可以使用?方式传递参数
- //参数的索引从0开始
- //传递的参数值,不用单引号引起来
- //注意方法链编程
- Liststudents=session.createQuery("selects.id,s.namefromStudentswheres.namelike?")
- .setParameter(0,"%1%")
- .list();
- =============================================================
- C
- //使用:参数名称的方式传递参数值
- Liststudents=session.createQuery("selects.id,s.namefromStudentswheres.namelike:myname")
- .setParameter("myname","%1%")
- .list();
- for(Iteratoriter=students.iterator();iter.hasNext();){
- Object[]obj=(Object[])iter.next();
- System.out.println(obj[0]+","+obj[1]);
- }
- ==============================================================
- D
- //使用:参数名称的方式传递参数值
- Liststudents=session.createQuery("selects.id,s.namefromStudentswheres.namelike:mynameands.id=:myid")
- .setParameter("myname","%1%")
- .setParameter("myid",12)
- .list();
- ===============================================================
- E
- //支持in,需要使用setParameterList进行参数传递
- Liststudents=session.createQuery("selects.id,s.namefromStudentswheres.idin(:myids)")
- .setParameterList("myids",newObject[]{1,2,3,4,5})
- .list();
- ==================================================================
- F
- //查询2008年2月创建的学生
- Liststudents=session.createQuery("selects.id,s.namefromStudentswheredate_format(s.createTime,'%Y-%m')=?")
- .setParameter(0,"2008-02")
- .list();
- ====================================================================
- G
- SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
- //查询2008-01-10到2008-02-15创建的学生
- Liststudents=session.createQuery("selects.id,s.namefromStudentswheres.createTimebetween?and?")
- .setParameter(0,sdf.parse("2008-01-1000:00:00"))
- .setParameter(1,sdf.parse("2008-02-1523:59:59"))
- .list();