Hibernate—Query

来源:互联网 发布:php 统计图 编辑:程序博客网 时间:2024/06/04 08:13

本篇文章主要介绍Query的查询

1.首先介绍一下实体类

[java] view plaincopy
  1. public class User {  
  2.     //id字段,主键  
  3.     private int id;  
  4.     //用户名  
  5.     private String username;  
  6.     //密码  
  7.     private String userpass;  
  8.     //无参数构造方法  
  9.     public User(){}  
  10.     //有参数构造方法  
  11.     public User(int id,String username,String userpass){  
  12.         this.id=id;  
  13.         this.username=username;  
  14.         this.userpass=userpass;  
  15.     }  
  16.     public int getId() {  
  17.         return id;  
  18.     }  
  19.     //相应的getter setter  
  20.     public void setId(int id) {  
  21.         this.id = id;  
  22.     }  
  23.     public String getUsername() {  
  24.         return username;  
  25.     }  
  26.     public void setUsername(String username) {  
  27.         this.username = username;  
  28.     }  
  29.     public String getUserpass() {  
  30.         return userpass;  
  31.     }  
  32.     public void setUserpass(String userpass) {  
  33.         this.userpass = userpass;  
  34.     }  
  35. }  


2.介绍完实体类,便对数据库中的数据进行查询

1)获取整个对象的所有字段

[java] view plaincopy
  1. public static void main(String[] args) {  
  2.   // TODO Auto-generated method stub  
  3.   Session session=null;  
  4.   Transaction tx=null;  
  5.   session=HibernateSessionFactory.getSession();  
  6.   tx=session.beginTransaction();  
  7.   //查询整个对象的所有字段  
  8.   String hql="from User";  
  9.   Query query=session.createQuery(hql);  
  10.   List<User> list=query.list();  
  11.   Iterator its=list.iterator();  
  12.   while(its.hasNext()){  
  13.    User user=(User)its.next();  
  14.    System.out.println(user.getId()+" "+user.getUsername()+" "+user.getUserpass());  
  15.   }  
  16.  }  

Console

1 乔丹 123
2 罗德曼 123

2)获取单一属性

[java] view plaincopy
  1. public static void main(String[] args) {  
  2.         // TODO Auto-generated method stub  
  3.         Session session=null;  
  4.         Transaction tx=null;  
  5.         session=HibernateSessionFactory.getSession();  
  6.         tx=session.beginTransaction();  
  7.         //查询整个对象的所有字段  
  8.         String hql="select id from User";  
  9.         Query query=session.createQuery(hql);  
  10.         List<java.lang.Integer> list=query.list();  
  11.         Iterator its=list.iterator();  
  12.         while(its.hasNext()){  
  13.             int a=(java.lang.Integer)its.next();  
  14.             System.out.println(a);  
  15.         }  
  16.     }  

Console:

1
2

3)查询多个属性

查询多个属性时,返回的list集合元素类型为Object[]数组(即对象数组),这里注意的是集合元素为对象数组,不是集合为对象数组。

[java] view plaincopy
  1. public static void main(String[] args) {  
  2.         // TODO Auto-generated method stub  
  3.         Session session=null;  
  4.         Transaction tx=null;  
  5.         session=HibernateSessionFactory.getSession();  
  6.         tx=session.beginTransaction();  
  7.         //查询整个对象的所有字段  
  8.         String hql="select username,userpass from User";  
  9.         Query query=session.createQuery(hql);  
  10.         List<Object[]> list=query.list();  
  11. //iterator遍历        Iterator its=list.iterator();  
  12.         while(its.hasNext()){  
  13.             Object[] a=(Object[])its.next();  
  14.             System.out.println(a[0].toString()+" "+a[1].toString());  
  15.         }  
  16.     }  


4)条件查询

[java] view plaincopy
  1. String hql="from User where username=? and userpass=?";  
  2.         Query query=session.createQuery(hql);  
  3.         //第一种方式  
  4.         //query.setString(0, "乔丹");  
  5.         //query.setString(1,"123");  
  6.         //第二种方式  
  7.         query.setParameter(0,"乔丹",Hibernate.STRING);  
  8.         query.setParameter(1"123",Hibernate.STRING);  
  9.         List<User> list=query.list();  
  10.         for(User user:list){  
  11.             System.out.println(user.getId());  
  12.         }  


查询用户名为:乔丹,密码为123的成员。

两种方式,一种是setString的方式,另一种是setParameter的方式。

通过增强的for循环输出

Console:

1

当然还有自定义索引的条件查询方式

[java] view plaincopy
  1. public static void main(String[] args) {  
  2.         // TODO Auto-generated method stub  
  3.         Session session=null;  
  4.         Transaction tx=null;  
  5.         session=HibernateSessionFactory.getSession();  
  6.         tx=session.beginTransaction();  
  7.         //查询整个对象的所有字段  
  8.         String hql1="from User where username=:username and userpass=:userpass";  
  9.         Query query1=session.createQuery(hql1);  
  10.         //第一种方式  
  11.         /*query.setString("username","乔丹"); 
  12.          * query.setString("userpass","123") 
  13.          *  
  14.          * */  
  15.           
  16.         //第二种凡是,第三个参数确定类型  
  17.         query1.setParameter("username","乔丹",Hibernate.STRING);  
  18.         query1.setParameter("userpass","123",Hibernate.STRING);  
  19.         List<User> list1=query1.list();  
  20.         for(User user:list1){  
  21.             System.out.println(user.getId());  
  22.         }  
  23.     }  

Console:

1

Query查询方式还有很多,大多是在这上面进行的延伸,相比于Criteria查询方式,Query查询方式更加灵活,效率更高。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 生完孩子肚子越来越大怎么办 怀孕8个月肚子小怎么办 孕晚期胎儿不长怎么办 肚子上肉特别多怎么办 奶堵了有硬块怎么办 便秘5天肚子胀怎么办 上火大便拉不出来怎么办 大便拉不出来肚子痛怎么办 戒奶奶涨有硬块怎么办 忌奶的时候涨奶怎么办 娃儿隔奶,,奶涨怎么办 狗肚子很大很鼓怎么办 注册不了的二建怎么办 专升本没考过怎么办 警察乱拘留人该怎么办 玩英雄联盟太卡怎么办 一方离婚证丢了怎么办 遭遇呼死你软件怎么办 开车遇见碰瓷的怎么办 遇到碰瓷老人的怎么办 睿强遥控锁坏了怎么办 地暖分水器坏了怎么办 京东赠品无货怎么办 图书馆的书丢了怎么办 三次临牌用完了怎么办 m3u8文件只有10k怎么办 寿县到淮南高铁怎么办 冰箱停电肉臭了怎么办 新买冰箱有异味怎么办 海康用户被锁定怎么办 大华dss录像没了怎么办 燃气软管超过2米怎么办 中央空调进了水怎么办 车门被划了一道怎么办 镜前灯没有留线怎么办 永大电梯故障44怎么办 物业把电梯停了怎么办 捷信贷款还不起怎么办 c1驾驶证扣12分怎么办 打架被警察抓了怎么办 寄快递写错电话怎么办