hibernate------hql总结

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-fareast-font-family:宋体; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:Calibri; mso-fareast-font-family:宋体; mso-hansi-font-family:Calibri; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:337343904; mso-list-template-ids:-1930547840;} @list l1 {mso-list-id:622343370; mso-list-template-ids:-1064941450;} @list l2 {mso-list-id:768741823; mso-list-template-ids:314239220;} @list l3 {mso-list-id:930310502; mso-list-template-ids:1653253762;} @list l4 {mso-list-id:992946330; mso-list-template-ids:-1942436294;} @list l5 {mso-list-id:1246038259; mso-list-template-ids:719636244;} @list l6 {mso-list-id:1490487529; mso-list-template-ids:612413166;} @list l7 {mso-list-id:2018923177; mso-list-template-ids:-547059332;} @list l8 {mso-list-id:2106655902; mso-list-template-ids:-1446508740;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

. 查询整个映射对象所有字段

Java 代码 复制代码

  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

2. 查询单个字段 

Java 代码 复制代码

  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<String> list = query.list();  

         for(String str : list){  

            System.out.println(str);  

        }  

输出结果为:  

name1  

name2  

name3 



3.
查询其中几个字段
 

Java 代码 复制代码

  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<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 形式返回

引用

// 查询其中几个字段, 添加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 代码 复制代码

  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<Map> 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 里是不允许有重复 的元素,所以:usernamepassword 的值不能相同。只需将hql 改为:String hql = " select new set(name,passwd) from Users";

7.
修改默认查询结果(query.list()) 不以Object[] 数组形式返回,以自定义类型返回

自定义类:
 

Java 代码 复制代码

  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 代码 复制代码

  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<hibernate-mapping auto-import="true"> 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<MyUser> 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 代码 复制代码

  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<Users> list = query.list();  

        for(Users users : list){  

             System.out.println(users.getId());  

        }  

         

Java 代码 复制代码

  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<Users> list = query.list();  

        for(Users users : list){  

            System.out.println(users.getId());  

        } 

 

Java 代码 复制代码

  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.         }    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值