Hibernate之HQL总结(转)
1. 查询整个映射对象所有字段
?
Java代码?
//直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段 ? ? ?
? ? ? ? String hql = "from Users"; ? ? ?
? ? ? ? Query query = session.createQuery(hql); ? ? ?
? ? ? ? ? ? ??
? ? ? ? List<Users> users = query.list(); ? ? ?
? ? ? ? for(Users user : users){ ? ? ?
? ? ? ? ? ? System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId()); ? ? ?
? ? ? ? } ? ? ?
? ? ?
?输出结果为: ? ? ?
name1 : password1 : 1 ? ??
name2 : password2 : 2 ? ??
name3 : password3 : 3 ? ?
[java] view plaincopy
//直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段 ? ??
? ? ? ? String hql = "from Users"; ? ??
? ? ? ? Query query = session.createQuery(hql); ? ??
? ? ? ? ? ? ?
? ? ? ? List<Users> users = query.list(); ? ??
? ? ? ? for(Users user : users){ ? ??
? ? ? ? ? ? System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId()); ? ??
? ? ? ? } ? ??
? ??
?输出结果为: ? ??
name1 : password1 : 1 ? ?
name2 : password2 : 2 ? ?
name3 : password3 : 3 ? ?
?
?
2.查询单个字段?
?
Java代码?
//查询单个字段 ? ? ?
? ? ? ? String hql = " select name from Users"; ? ? ?
? ? ? ? Query query = session.createQuery(hql); ? ? ?
? ? ? ? ? ? ??
? ? ? ? List<String> list = query.list(); ? ? ?
? ? ? ? for(String str : list){ ? ? ?
? ? ? ? ? ? System.out.println(str); ? ? ?
? ? ? ? } ? ? ?
输出结果为: ? ? ?
name1 ? ? ?
name2 ? ? ?
name3 ? ?
[java] view plaincopy
//查询单个字段 ? ??
? ? ? ? String hql = " select name from Users"; ? ??
? ? ? ? Query query = session.createQuery(hql); ? ??
? ? ? ? ? ? ?
? ? ? ? List<String> list = query.list(); ? ??
? ? ? ? for(String str : list){ ? ??
? ? ? ? ? ? System.out.println(str); ? ??
? ? ? ? } ? ??
输出结果为: ? ??
name1 ? ??
name2 ? ??
name3 ? ?
?
?
3.查询其中几个字段?
?
?
Java代码?
//查询其中几个字段 ? ? ?
? ? ? ? String hql = " select name,passwd from Users"; ? ? ?
? ? ? ? Query query = session.createQuery(hql); ? ? ?
? ? ? ? //默认查询出来的list里存放的是一个Object数组 ? ? ?
? ? ? ? List<Object[]> list = query.list(); ? ? ?
? ? ? ? for(Object[] object : list){ ? ? ?
? ? ? ? ? ? String name = (String)object[0]; ? ? ?
? ? ? ? ? ? String passwd = (String)object[1]; ? ? ?
? ? ? ? ? ? ? ? ??
? ? ? ? ? ? System.out.println(name + " : " + passwd); ? ? ?
? ? ? ? } ? ? ?
输出结果为: ? ? ?
name1 : password1 ? ? ?
name2 : password2 ? ? ?
name3 : password3 ? ?
[java] view plaincopy
//查询其中几个字段 ? ??
? ? ? ? String hql = " select name,passwd from Users"; ? ??
? ? ? ? Query query = session.createQuery(hql); ? ??
? ? ? ? //默认查询出来的list里存放的是一个Object数组 ? ??
? ? ? ? List<Object[]> list = query.list(); ? ??
? ? ? ? for(Object[] object : list){ ? ??
? ? ? ? ? ? String name = (String)object[0]; ? ??
? ? ? ? ? ? String passwd = (String)object[1]; ? ??
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? System.out.println(name + " : " + passwd); ? ??
? ? ? ? } ? ??
输出结果为: ? ??
name1 : password1 ? ??
name2 : password2 ? ??
name3 : password3 ? ?
?
?
4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回
?
Java代码?
?
?
?
?
//查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了 ??
? ? ? ? String hql = " select new list(name,passwd) from Users"; ??
? ? ? ? Query query = session.createQuery(hql); ??
? ? ? ? //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了 ??
? ? ? ? List<List> list = query.list(); ??
? ? ? ? for(List user : list){ ??
? ? ? ? ? ? String name = (String)user.get(0); ??
? ? ? ? ? ? String passwd = (String)user.get(1); ??
? ? ? ? ? ? ? ?
? ? ? ? ? ? System.out.println(name + " : " + passwd); ??
? ? ? ? } ??
? ? ? ? /** ?
? ? ? ? 输出结果为: ?
? ? ? ? ?name1 : password1 ?
? ? ? ? name2 : password2 ?
? ? ? ? name3 : password3 ?
? ? ? ? ?*/?
?
5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回
?
Java代码?
//查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了 ? ? ?
? ? ? ? String hql = " select new map(name,passwd) from Users"; ? ? ?
? ? ? ? Query query = session.createQuery(hql); ? ? ?
? ? ? ? //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了 ? ? ?
? ? ? ? List<Map> list = query.list(); ? ? ?
? ? ? ? for(Map user : list){ ? ? ?
? ? ? ? ? ? //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值 ? ? ?
? ? ? ? ? ? //如果将hql改为:String hql?