Hibernate笔记:HQL查询总结(二)——条件查询(转)
2014-01-24 11:44
507 查看
条件查询
1.拼字符串
where条件后面,可以用字符串连接组成条件
2.可以采用 ?来传递参数(索引从0开始)
(1)分开设值
(2)方法链
3.使用 :参数名称的方式传递参数值
4.支持谓词in,需要使用setParameterList进行参数传递
5.在HQL中使用数据库的函数
6.查询时间段的数据
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 |
相关文章推荐
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle 数据库 临时数据的处理方法
- 最近比较流行的数据库挂马
- 重装主控服务器后,数据库连接失败的解决办法:请正确还原数据库。
- 九种防MDB数据库被下载的方法小结
- asp向数据库插入数据的方法rs
- 浅析C# web访问mysql数据库-整理归纳总结
- SQL Server误区30日谈 第9天 数据库文件收缩不会影响性能
- sql2008 hql语句翻译过来的分页语句介绍