博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HQL select 总结
阅读量:6257 次
发布时间:2019-06-22

本文共 11008 字,大约阅读时间需要 36 分钟。

hot3.png

博客分类:
 
1. 查询整个映射对象所有字段
Java代码  
收藏代码
spinner.gif
  1. //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段      
  2.         String hql = "from Users";      
  3.         Query query = session.createQuery(hql);      
  4.               
  5.         List<Users> users = query.list();      
  6.         for(Users user : users){      
  7.             System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());      
  8.         }      
  9.      
  10.  输出结果为:      
  11. name1 : password1 : 1     
  12. name2 : password2 : 2     
  13. name3 : password3 : 3    
//直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段           String hql = "from Users";           Query query = session.createQuery(hql);                      List
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代码  
收藏代码
spinner.gif
  1. //查询单个字段      
  2.         String hql = " select name from Users";      
  3.         Query query = session.createQuery(hql);      
  4.               
  5.         List<String> list = query.list();      
  6.         for(String str : list){      
  7.             System.out.println(str);      
  8.         }      
  9. 输出结果为:      
  10. name1      
  11. name2      
  12. name3    
//查询单个字段           String hql = " select name from Users";           Query query = session.createQuery(hql);                      List
list = query.list(); for(String str : list){ System.out.println(str); } 输出结果为: name1 name2 name3
3.查询其中几个字段
Java代码  
收藏代码
spinner.gif
  1. //查询其中几个字段      
  2.         String hql = " select name,passwd from Users";      
  3.         Query query = session.createQuery(hql);      
  4.         //默认查询出来的list里存放的是一个Object数组      
  5.         List<Object[]> list = query.list();      
  6.         for(Object[] object : list){      
  7.             String name = (String)object[0];      
  8.             String passwd = (String)object[1];      
  9.                   
  10.             System.out.println(name + " : " + passwd);      
  11.         }      
  12. 输出结果为:      
  13. name1 : password1      
  14. name2 : password2      
  15. name3 : password3    
//查询其中几个字段           String hql = " select name,passwd from Users";           Query query = session.createQuery(hql);           //默认查询出来的list里存放的是一个Object数组           List
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代码  
收藏代码
spinner.gif
  1. //查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了      
  2.         String hql = " select new list(name,passwd) from Users";      
  3.         Query query = session.createQuery(hql);      
  4.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了      
  5.         List<List> list = query.list();      
  6.         for(List user : list){      
  7.             String name = (String)user.get(0);      
  8.             String passwd = (String)user.get(1);      
  9.                   
  10.             System.out.println(name + " : " + passwd);      
  11.         }      
  12.         /**    
  13.         输出结果为:    
  14.          name1 : password1    
  15.         name2 : password2    
  16.         name3 : password3    
  17.          */    
//查询其中几个字段,添加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 = 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代码  
收藏代码
spinner.gif
  1. //查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了      
  2.         String hql = " select new map(name,passwd) from Users";      
  3.         Query query = session.createQuery(hql);      
  4.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了      
  5.         List<Map> list = query.list();      
  6.         for(Map user : list){      
  7.             //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值      
  8.             //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了      
  9.             String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形      
  10.             String passwd = (String)user.get("1");      
  11.                   
  12.             System.out.println(name + " : " + passwd);      
  13.         }      
  14.         /**    
  15.         输出结果为:    
  16.          name1 : password1    
  17.         name2 : password2    
  18.         name3 : password3    
  19.          */    
//查询其中几个字段,添加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 list = query.list();           for(Map user : list){               //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值               //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了               String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形               String passwd = (String)user.get("1");                              System.out.println(name + " : " + passwd);           }           /**          输出结果为:           name1 : password1          name2 : password2          name3 : password3           */
6.修改默认查询结果(query.list())不以Object[]数组形式返回,以Set形式返回,但是因为Set里是不允许有重复的元素,所以:username和password的值不能相同。只需将hql改为:String hql = " select new set(name,passwd) from Users";
7.修改默认查询结果(query.list())不以Object[]数组形式返回,以自定义类型返回
自定义类
Java代码  
收藏代码
spinner.gif
  1. package com.domain;      
  2.      
  3. public class MyUser {      
  4.      
  5.     private String username;      
  6.     private String password;      
  7. //因为:String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数      
  8.     public MyUser(String username,String password){      
  9.         this.username = username;      
  10.         this.password = password;      
  11.     }      
  12.           
  13.     public String getUsername() {      
  14.         return username;      
  15.     }      
  16.     public void setUsername(String username) {      
  17.         this.username = username;      
  18.     }      
  19.     public String getPassword() {      
  20.         return password;      
  21.     }      
  22.     public void setPassword(String password) {      
  23.         this.password = password;      
  24.     }      
  25.           
  26.           
  27. }    
package com.domain;     public class MyUser {         private String username;       private String password;   //因为:String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数       public MyUser(String username,String password){           this.username = username;           this.password = password;       }              public String getUsername() {           return username;       }       public void setUsername(String username) {           this.username = username;       }       public String getPassword() {           return password;       }       public void setPassword(String password) {           this.password = password;       }                 }
Java代码  
收藏代码
spinner.gif
  1. //通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里<hibernate-mapping auto-import="true"> auto-import默认值为true(所以auto-import属性也可以不写),自动导入了      
  2.         String hql = " select new  com.domain.MyUser(name,passwd) from Users";      
  3.         Query query = session.createQuery(hql);      
  4.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了      
  5.         List<MyUser> myUsers = query.list();      
  6.         for(MyUser myUser : myUsers){      
  7.             String name = myUser.getUsername();      
  8.             String passwd = myUser.getPassword();      
  9.             System.out.println(name + " : " + passwd);      
  10.         }      
  11.         /**    
  12.         输出结果为:    
  13.         name1 : password1    
  14.         name2 : password2    
  15.         name3 : password3    
  16.          */    
//通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里
auto-import默认值为true(所以auto-import属性也可以不写),自动导入了 String hql = " select new com.domain.MyUser(name,passwd) from Users"; Query query = session.createQuery(hql); //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了 List
myUsers = query.list(); for(MyUser myUser : myUsers){ String name = myUser.getUsername(); String passwd = myUser.getPassword(); System.out.println(name + " : " + passwd); } /** 输出结果为: name1 : password1 name2 : password2 name3 : password3 */
8:条件查询
Java代码  
收藏代码
spinner.gif
  1. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数      
  2.         String hql = "from Users where name=? and passwd=?";      
  3.         Query query = session.createQuery(hql);      
  4.         //第1种方式      
  5. //      query.setString(0, "name1");      
  6. //      query.setString(1, "password1");      
  7.         //第2种方式      
  8.         query.setParameter(0, "name1",Hibernate.STRING);      
  9.         query.setParameter(1, "password1",Hibernate.STRING);      
  10.         List<Users> list = query.list();      
  11.         for(Users users : list){      
  12.             System.out.println(users.getId());      
  13.         }     
//条件查询,参数索引值从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
list = query.list(); for(Users users : list){ System.out.println(users.getId()); }
Java代码  
收藏代码
spinner.gif
  1. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数      
  2.         String hql = "from Users where name=:username and passwd=:password";      
  3.         Query query = session.createQuery(hql);      
  4.         //第1种方式      
  5. //      query.setString("username", "name1");      
  6. //      query.setString("password", "password1");      
  7.         //第2种方式,第3个参数确定类型      
  8.         query.setParameter("username", "name1",Hibernate.STRING);      
  9.         query.setParameter("password", "password1",Hibernate.STRING);      
  10.         List<Users> list = query.list();      
  11.         for(Users users : list){      
  12.             System.out.println(users.getId());      
  13.         }    
//条件查询,自定义索引名(参数名):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);           List
list = query.list(); for(Users users : list){ System.out.println(users.getId()); }
Java代码  
收藏代码
spinner.gif
  1. //条件查询,通过setProperties设置参数      
  2.         String hql = "from Users where name=:username and passwd=:password";      
  3.         Query query = session.createQuery(hql);      
  4.         //MyUser类的2个属性必须和:username和:password对应      
  5.         MyUser myUser = new MyUser("name1","password1");      
  6.         query.setProperties(myUser);      
  7.         List<Users> list = query.list();      
  8.         for(Users users : list){      
  9.             System.out.println(users.getId());      
  10.         }    
//条件查询,通过setProperties设置参数           String hql = "from Users where name=:username and passwd=:password";           Query query = session.createQuery(hql);           //MyUser类的2个属性必须和:username和:password对应           MyUser myUser = new MyUser("name1","password1");           query.setProperties(myUser);           List
list = query.list(); for(Users users : list){ System.out.println(users.getId()); }

转载于:https://my.oschina.net/tiancai/blog/128067

你可能感兴趣的文章
vue实现菜单切换
查看>>
Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较
查看>>
Maven学习总结(30)——Maven项目通用三级版本号说明
查看>>
如何提高iOS开发技能
查看>>
cocos2d-x HelloWorld 代码一撇
查看>>
2015.4.17专线割接
查看>>
map持久化类 Properties;对象序列化 ObjectOutputStream
查看>>
大端模式与小端模式、网络字节顺序与主机字节顺序
查看>>
ubuntu RPLIDAR A2的使用
查看>>
不用加减乘除实现加法运算
查看>>
一些有趣的javascript小测试
查看>>
数据库 innodb&MyISAM 简单区别
查看>>
Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
查看>>
Android中下拉框spinner的两种用法
查看>>
Andrew Ng 的 Machine Learning 课程学习 (week2) Linear Regression
查看>>
Windows下安装MongoDB
查看>>
MyBatis在insert插入操作时返回主键ID的配置
查看>>
使用eclipse的todo标签管理任务
查看>>
iOS 开发自定义一个提示框
查看>>
CentOS6.5加域
查看>>