Hibernate HQL语句总结
2014-08-14 08:52
465 查看
测试POJO(Employee类):
public class Employee implements java.io.Serializable { // Fields private Integer id; private String name; private String email; // Constructors /** default constructor */ public Employee() { } /** full constructor */ public Employee(String name, String email) { this.name = name; this.email = email; } // Property accessors public Employee(Integer id, String name, String email) { super(); this.id = id; this.name = name; this.email = email; } public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getEmail() { return this.email; } public void setEmail(String email) { this.email = email; } }
1、实体对象查询 (查询整个映射对象所有字段)
//该语句可获取已封装好的User对象的集合 ts = session.beginTransaction(); String hql = "from Employee"; Query query = session.createQuery(hql); List<Employee> list = query.list(); for(Employee emp:list) { System.out.println("id: " + emp.getId() + ",name: " + emp.getName() + ",email为: " + emp.getEmail()); } ts.commit();
2、查询字段
不能通过select * 将所有字段全部查出,这会对性能造成影响。HQL中,可以只查询部分字段。//该语句可获取已封装好的Object类型的数组的集合,失去了原有的对象状态,破坏了数据的封装性 ts = session.beginTransaction(); String hql = "select id,name,email from Employee"; Query query = session.createQuery(hql); List<Object[]> list = query.list(); for(Object[] object:list) { System.out.println("id: " + object[0] + ",name: " + object[1] + ",email为: " + object[2]); } ts.commit();
3、动态实例化对象查询
通过new关键字对实体对象动态实例化,这可以对数据做出封装,既不失去数据封装性,又可提高查询效率。//该语句返回的是Employee对象的集合 ts = session.beginTransaction(); String hql = "select new Employee(id,name,email) from Employee"; Query query = session.createQuery(hql); List<Employee> list = query.list(); for(Employee emp:list) { System.out.println("id: " + emp.getId() + ",name: " + emp.getName() + ",email为: " + emp.getEmail()); } ts.commit();
4、修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回
ts = session.beginTransaction(); //dql语句中的list中的l为小写 String hql = "select new list(id,name,email) from Employee"; Query query = session.createQuery(hql); List<List> list = query.list(); for(List empList:list) { System.out.println("id: " + empList.get(0) + ",name: " + empList.get(1) + ",email为: " + empList.get(2)); } ts.commit();
5、修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回
ts = session.beginTransaction(); //dql语句中的map中的m为小写 String hql = "select new map(id,name,email) from Employee"; Query query = session.createQuery(hql); List<Map> list = query.list(); for(Map map:list) { //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值 //如果将hql改为:String hql = " select new map(id as id,name as username,email as userEmail)from Users"; //,那么key将不是字符串0,1,2...了,而是"id","username","userEmail"了 System.out.println("id: " + map.get("0") + ",name: " + map.get("1") + ",email为: " + map.get("2")); } ts.commit();
6、条件查询
1)“?” 号代表参数ts = session.beginTransaction(); String hql = "from Employee emp where emp.id=?"; Query query = session.createQuery(hql); //为HQL参数赋值 query.setParameter(0, 1); List<Employee> list = query.list(); for(Employee emp:list) { System.out.println("id: " + emp.getId() + ",name: " + emp.getName() + ",email为: " + emp.getEmail()); } ts.commit();
2)自定义参数名称
ts = session.beginTransaction(); String hql = "from Employee emp where emp.id=:userId"; Query query = session.createQuery(hql); //为HQL参数赋值 query.setParameter("userId", 1); List<Employee> list = query.list(); for(Employee emp:list) { System.out.println("id: " + emp.getId() + ",name: " + emp.getName() + ",email为: " + emp.getEmail()); } ts.commit();
7、update数据
ts = session.beginTransaction(); String hql = "update Employee set name='testtest' where id=1"; Query query = session.createQuery(hql); //为HQL参数赋值 query.executeUpdate(); ts.commit();
参考资料:http://www.cnblogs.com/focusChen/articles/2401892.html
相关文章推荐
- hibernate的hql查询语句总结
- Hibernate HQL查询语句总结
- hibernate -- HQL语句总结
- hibernate的hql查询语句总结
- hibernate -- HQL语句总结
- hibernate的hql查询语句总结
- hibernate -- HQL语句总结
- hibernate的hql查询语句总结
- hibernate中常用的Hql语句总结
- hibernate -- HQL语句总结
- Hibernate中常用的HQL语句总结
- hibernate -- HQL语句总结
- hibernate -- HQL语句总结
- Hibernate HQL查询语句总结
- hibernate的hql查询语句总结
- hibernate -- HQL语句总结
- hibernate的hql查询语句总结
- hibernate -- HQL语句总结
- hibernate的hql查询语句总结
- hibernate的hql查询语句总结