Java-hibernate框架3(查询语句总结)
来源:互联网 发布:管家婆软件怎么注册 编辑:程序博客网 时间:2024/06/05 07:43
Hibernate 查询方式
1、Hibernate查询HQL语句
限制查询结果记录数与起始记录
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery("from Customer");
query.setFirstResult(10); //设置查询记录开始位置,索引从0开始。
query.setMaxResults(10);//设置查询返回的最大记录个数。
List list=query.list();
注意:条件查询
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery("from Customer cus wherecus.name='zhou'");
2、取表中部分列时
(1) 单一属性查询。还是返回一个集合,只不过集合中存储的不是表的实例而是对象。
Session session = null;
session = HibernateSessionFactory.getSession();
List cnames = session.createQuery("selectcname fromCustomer").list();
for (int i=0;i< cnames.size();i++) {
String name = (String)cnames.get(i);
System.out.println(name);
}
(2) 多个属性的查询,使用对象数组。
Session session = null;
session = HibernateSessionFactory.getSession();
//查询多个属性,其集合元素是对象数组
//数组元素的类型,跟实体类的属性的类型相关
List students = session.createQuery("selectsno, sname fromStudents").list();
for (int i=0;i< students.size();i++) {
Object[] obj = (Object[])students.get(i);
System.out.println(obj[0] + ", " + obj[1]);
}
(3) 多个属性的查询,使用List集合装部分列
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("selectnew list(cus.name,cus.phone) from Customer cus");
List list = query.list();
for (int i = 0; i < list.size(); i++) {
List temp=(List)list.get(i);
System.out.println(temp.get(0)); //0是索引
}
(4)使用Map集合装部分列
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("selectnew map(cus.name,cus.phone) from Customer cus");
List list = query.list();
for (int i = 0; i < list.size(); i++) {
Map temp=(Map)list.get(i);
System.out.println(temp.get("1")); //"1"是key
}
3、内连接
Query query=session.createQuery("select c.name, s.namefrom Student s join s.classes c ").list();
for (Iterator iter = students.iterator();iter.hasNext();) {
Object[] obj = (Object[])iter.next();
System.out.println(obj[0] + ", " + obj[1]);
}
4、外连接
select c.name, s.name from Classes c left join c.students s
select c.name, s.name from Classes c right join c.students s
5、带参数的查询
(1) ?作为参数如"from Customer cus where cus.name=?";
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("from Customer cus where cus.name=?");
query.setParameter(0, "zhou");
List list = query.list();
(2) 参数名称 :name 如" from Customer cus where cus.name=:name";
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("from Customer cus where cus.name=:name ");
query.setParameter("name", "zhou");
List list = query.list();
(3) 条件查询,使用?的方式传递参数
Query query = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.nameLIKE ?");
query.setParameter(0, “%周%”); //传递参数参数的索引是从0开始的。 如条件查询,使用":参数"名称的方式传递参数
Query query = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.nameLIKE :myname");
query.setParameter("myname", "张三");//传递参数
因为setParameter方法返回Query接口,所以可用省略方式来查询
List students = session.createQuery("SELECT s.id, s.name FROM Student s WHERE s.nameLIKE :myname and s.id = :myid")
setParameter("myname", "%周%").setParameter("myid", 15).list();
6、嵌入原生sql测试
SQLQuery sqlQuery = session.createSQLQuery("select *from t_student");
List students = sqlQuery.list();
for (Iterator iter = students.iterator();iter.hasNext();) {
Object[] obj = (Object[])iter.next();
System.out.println(obj[0] + ", " + obj[1]);
}
0 0
- Java-hibernate框架3(查询语句总结)
- hibernate 查询语句总结
- hibernate 查询语句总结
- hibernate 查询语句总结
- hibernate查询语句总结
- hibernate查询语句总结
- Hibernate HQL查询语句总结
- Hibernate HQL查询语句总结
- hibernate 的hql查询语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结
- 新浪SAE链接数据库
- Atitit.如何避免公司破产倒闭的业务魔咒
- 进程与线程常见问题小结
- NAT协议
- CryEngine 5.2.1 SDK编译
- Java-hibernate框架3(查询语句总结)
- Ubuntu中MySql的启动与关闭
- 求最大公约数
- Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2
- MPI笔记
- quick-lua Mac在Xcode7报错找不到libz库文件
- POJ - 1459 Power Network
- Java面向对象20个精华知识点
- Atitit WebDriver技术规范原理与概念