hql查询

Java代码
  1. 关键字: hibernate------hql总结    
  2. 1. 查询整个映射对象所有字段    
  3.   
  4. Java代码    
  5. //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段         
  6.        String hql = "from Users";         
  7.        Query query = session.createQuery(hql);         
  8.                
  9.        List users = query.list();         
  10.      for(Users user : users){         
  11.          System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());         
  12.      }         
  13.        
  14.  输出结果为:         
  15. name1 : password1 : 1        
  16. name2 : password2 : 2        
  17. name3 : password3 : 3       
  18. //直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段      
  19.         String hql = "from Users";      
  20.         Query query = session.createQuery(hql);      
  21.               
  22.         List users = query.list();      
  23.         for(Users user : users){      
  24.             System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());      
  25.         }      
  26.      
  27.  输出结果为:      
  28. name1 : password1 : 1     
  29. name2 : password2 : 2     
  30. name3 : password3 : 3     
  31.   
  32. 2查询单个字段     
  33.   
  34. Java代码    
  35. //查询单个字段         
  36.        String hql = " select name from Users";         
  37.         Query query = session.createQuery(hql);         
  38.                  
  39.         List list = query.list();         
  40.         for(String str : list){         
  41.            System.out.println(str);         
  42.         }         
  43. 输出结果为:         
  44. name1         
  45. name2         
  46. name3       
  47. //查询单个字段      
  48.         String hql = " select name from Users";      
  49.         Query query = session.createQuery(hql);      
  50.               
  51.         List list = query.list();      
  52.         for(String str : list){      
  53.             System.out.println(str);      
  54.         }      
  55. 输出结果为:      
  56. name1      
  57. name2      
  58. name3     
  59.   
  60. 3查询其中几个字段    
  61.      
  62.   
  63. Java代码    
  64. //查询其中几个字段         
  65.         String hql = " select name,passwd from Users";         
  66.         Query query = session.createQuery(hql);         
  67.         //默认查询出来的list里存放的是一个Object数组         
  68.         List list = query.list();         
  69.        for(Object[] object : list){         
  70.             String name = (String)object[0];         
  71.             String passwd = (String)object[1];         
  72.                     
  73.             System.out.println(name + " : " + passwd);         
  74.         }         
  75. 输出结果为:         
  76. name1 : password1         
  77. name2 : password2         
  78. name3 : password3       
  79. //查询其中几个字段      
  80.         String hql = " select name,passwd from Users";      
  81.         Query query = session.createQuery(hql);      
  82.         //默认查询出来的list里存放的是一个Object数组      
  83.         List list = query.list();      
  84.         for(Object[] object : list){      
  85.             String name = (String)object[0];      
  86.             String passwd = (String)object[1];      
  87.                   
  88.             System.out.println(name + " : " + passwd);      
  89.         }      
  90. 输出结果为:      
  91. name1 : password1      
  92. name2 : password2      
  93. name3 : password3     
  94.   
  95. 4.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回    
  96.   
  97. 引用   
  98. //查询其中几个字段,添加new list(),注意list里的l是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是List集合了      
  99.         String hql = " select new list(name,passwd) from Users";      
  100.         Query query = session.createQuery(hql);      
  101.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是List集合了      
  102.         List list = query.list();      
  103.         for(List user : list){      
  104.             String name = (String)user.get(0);      
  105.             String passwd = (String)user.get(1);      
  106.                   
  107.             System.out.println(name + " : " + passwd);      
  108.         }      
  109.         /**    
  110.         输出结果为:    
  111.          name1 : password1    
  112.         name2 : password2    
  113.         name3 : password3    
  114.          */     
  115.   
  116. 5.修改默认查询结果(query.list())不以Object[]数组形式返回,以Map形式返回    
  117.   
  118. Java代码    
  119. //查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了         
  120.         String hql = " select new map(name,passwd) from Users";         
  121.         Query query = session.createQuery(hql);         
  122.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了         
  123.         List list = query.list();         
  124.         for(Map user : list){         
  125.             //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值         
  126.             //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了         
  127.             String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形         
  128.             String passwd = (String)user.get("1");         
  129.                      
  130.            System.out.println(name + " : " + passwd);         
  131.         }         
  132.         /**      
  133.        输出结果为:      
  134.          name1 : password1      
  135.        name2 : password2      
  136.        name3 : password3      
  137.         */       
  138. //查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了      
  139.         String hql = " select new map(name,passwd) from Users";      
  140.         Query query = session.createQuery(hql);      
  141.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是Map集合了      
  142.         List list = query.list();      
  143.         for(Map user : list){      
  144.             //一条记录里所有的字段值都是map里的一个元素,key是字符串0,1,2,3....,value是字段值      
  145.             //如果将hql改为:String hql = " select new map(name as username,passwd as password) from Users";,那么key将不是字符串0,1,2...了,而是"username","password"了      
  146.             String name = (String)user.get("0");//get("0");是get(key),注意:0,1,2...是字符串,而不是整形      
  147.             String passwd = (String)user.get("1");      
  148.                   
  149.             System.out.println(name + " : " + passwd);      
  150.         }      
  151.         /**    
  152.         输出结果为:    
  153.          name1 : password1    
  154.         name2 : password2    
  155.         name3 : password3    
  156.          */     
  157. 6.修改默认查询结果(query.list())不以Object[]数组形式返回,以Set形式返回,但是因为Set里是不允许有重复的元素,所以:username和password的值不能相同。只需将hql改为:String hql = " select new set(name,passwd) from Users";    
  158.   
  159. 7.修改默认查询结果(query.list())不以Object[]数组形式返回,以自定义类型返回    
  160.   
  161. 自定义类:    
  162.      
  163.   
  164. Java代码    
  165. package com.domain;         
  166.         
  167. public class MyUser {         
  168.         
  169.     private String username;         
  170.     private String password;         
  171. //因为:String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数         
  172.     public MyUser(String username,String password){         
  173.         this.username = username;         
  174.         this.password = password;         
  175.     }         
  176.              
  177.     public String getUsername() {         
  178.         return username;         
  179.     }         
  180.     public void setUsername(String username) {         
  181.         this.username = username;         
  182.     }         
  183.         public String getPassword() {         
  184.        return password;         
  185.     }         
  186.     public void setPassword(String password) {         
  187.         this.password = password;         
  188.     }         
  189.              
  190.              
  191. }       
  192. package com.domain;      
  193.      
  194. public class MyUser {      
  195.      
  196.     private String username;      
  197.     private String password;      
  198. //因为:String hql = " select new  com.domain.MyUser(name,passwd) from Users";所以必须要有接受2个参数的构造函数      
  199.     public MyUser(String username,String password){      
  200.         this.username = username;      
  201.         this.password = password;      
  202.     }      
  203.           
  204.     public String getUsername() {      
  205.         return username;      
  206.     }      
  207.     public void setUsername(String username) {      
  208.         this.username = username;      
  209.     }      
  210.     public String getPassword() {      
  211.         return password;      
  212.     }      
  213.     public void setPassword(String password) {      
  214.         this.password = password;      
  215.     }      
  216.           
  217.           
  218. }     
  219.   
  220.      
  221.   
  222. Java代码    
  223. //通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里 auto-import默认值为true(所以auto-import属性也可以不写),自动导入了         
  224.        String hql = " select new  com.domain.MyUser(name,passwd) from Users";         
  225.         Query query = session.createQuery(hql);         
  226.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了         
  227.         List myUsers = query.list();         
  228.         for(MyUser myUser : myUsers){         
  229.             String name = myUser.getUsername();         
  230.             String passwd = myUser.getPassword();         
  231.             System.out.println(name + " : " + passwd);         
  232.         }         
  233.         /**      
  234.         输出结果为:      
  235.        name1 : password1      
  236.         name2 : password2      
  237.         name3 : password3      
  238.          */       
  239. //通过query.list()出来的list里存放的不再是默认的Object数组了,而是自定义的类MyUser,必须加包名,String hql = "from Users";中的Users类也是必须加包名的,但是因为再Users.hbm.xml里 auto-import默认值为true(所以auto-import属性也可以不写),自动导入了      
  240.         String hql = " select new  com.domain.MyUser(name,passwd) from Users";      
  241.         Query query = session.createQuery(hql);      
  242.         //默认查询出来的list里存放的是一个Object数组,但是在这里list里存放的不再是默认的Object数组了,而是MyUser对象了      
  243.         List myUsers = query.list();      
  244.         for(MyUser myUser : myUsers){      
  245.             String name = myUser.getUsername();      
  246.             String passwd = myUser.getPassword();      
  247.             System.out.println(name + " : " + passwd);      
  248.         }      
  249.         /**    
  250.         输出结果为:    
  251.         name1 : password1    
  252.         name2 : password2    
  253.         name3 : password3    
  254.          */     
  255.   
  256. 8:条件查询    
  257.   
  258. Java代码    
  259. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数         
  260.         String hql = "from Users where name=? and passwd=?";         
  261.         Query query = session.createQuery(hql);         
  262.        //第1种方式         
  263. //      query.setString(0, "name1");         
  264. //      query.setString(1, "password1");         
  265.        //第2种方式         
  266.         query.setParameter(0"name1",Hibernate.STRING);         
  267.         query.setParameter(1"password1",Hibernate.STRING);         
  268.         List list = query.list();         
  269.         for(Users users : list){         
  270.             System.out.println(users.getId());         
  271.         }        
  272. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数      
  273.         String hql = "from Users where name=? and passwd=?";      
  274.         Query query = session.createQuery(hql);      
  275.         //第1种方式      
  276. //      query.setString(0, "name1");      
  277. //      query.setString(1, "password1");      
  278.         //第2种方式      
  279.         query.setParameter(0"name1",Hibernate.STRING);      
  280.         query.setParameter(1"password1",Hibernate.STRING);      
  281.         List list = query.list();      
  282.         for(Users users : list){      
  283.             System.out.println(users.getId());      
  284.         }                
  285.   
  286. Java代码    
  287. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数         
  288.         String hql = "from Users where name=:username and passwd=:password";         
  289.         Query query = session.createQuery(hql);         
  290.         //第1种方式         
  291. //      query.setString("username", "name1");         
  292. //      query.setString("password", "password1");         
  293.         //第2种方式,第3个参数确定类型         
  294.         query.setParameter("username""name1",Hibernate.STRING);         
  295.         query.setParameter("password""password1",Hibernate.STRING);         
  296.         List list = query.list();         
  297.         for(Users users : list){         
  298.             System.out.println(users.getId());         
  299.         }       
  300. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数      
  301.         String hql = "from Users where name=:username and passwd=:password";      
  302.         Query query = session.createQuery(hql);      
  303.         //第1种方式      
  304. //      query.setString("username", "name1");      
  305. //      query.setString("password", "password1");      
  306.         //第2种方式,第3个参数确定类型      
  307.         query.setParameter("username""name1",Hibernate.STRING);      
  308.         query.setParameter("password""password1",Hibernate.STRING);      
  309.         List list = query.list();      
  310.         for(Users users : list){      
  311.             System.out.println(users.getId());      
  312.         }     
  313.   
  314.   
  315. Java代码    
  316. //条件查询,通过setProperties设置参数         
  317.         String hql = "from Users where name=:username and passwd=:password";         
  318.        Query query = session.createQuery(hql);         
  319.        //MyUser类的2个属性必须和:username和:password对应         
  320.         MyUser myUser = new MyUser("name1","password1");         
  321.         query.setProperties(myUser);         
  322.         List list = query.list();         
  323.         for(Users users : list){         
  324.                         System.out.println(users.getId());         
  325.         }      
关键字: hibernate------hql总结 
1. 查询整个映射对象所有字段 

Java代码 
//直接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    
//直接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代码 
//查询单个字段      
       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    
//查询单个字段   
        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代码 
//查询其中几个字段      
        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    
//查询其中几个字段   
        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形式返回 

引用
//查询其中几个字段,添加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代码 
//查询其中几个字段,添加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    
        */    
//查询其中几个字段,添加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代码 
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;      
    }      
          
          
}    
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代码 
//通过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    
         */    
//通过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代码 
//条件查询,参数索引值从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());      
        }     
//条件查询,参数索引值从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代码 
//条件查询,自定义索引名(参数名):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());      
        }    
//条件查询,自定义索引名(参数名):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代码 
//条件查询,通过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());      
        }    

 摘自http://kuangbaoxu.javaeye.com/blog/193076

你可能感兴趣的:(string,object,list,query,java,user)