zoukankan      html  css  js  c++  java
  • hibernate使用原生SQL查询

    以下是Demo测试Hibernate 原生SQL查询:

    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    import org.hibernate.Hibernate;
    import org.hibernate.SQLQuery;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.transform.Transformers;
    
    import com.hibernate.bean.SqlQueryBean;
    import com.hibernate.bean.User;
    import com.hibernate.util.HibernateUtil;
    
    
    public class SqlQueryTest {
    
     public static void main (String [] args){
      
      sqlQueryAddScalar();
      
     }
      
      static void sqlQueryAddEntity(){
    
         //获取Hibernate Session对象
    
         Session session = HibernateUtil.getSession();
    
         //开始事务
    
         Transaction tx = session.beginTransaction();
    
         //编写SQL语句
    
         String sqlString = "select * from user";
    
         //以SQL语句创建SQLQuery对象
    
         List l = session.createSQLQuery(sqlString)
    
                         //将查询ss实体关联的User类
    
                         .addEntity("ss",User.class)
    
                         //返回全部的记录集
    
                         .list();
    
         //遍历结果集
    
         Iterator it = l.iterator();
    
         while (it.hasNext()){
    
             //因为将查询结果与Student类关联,因此返回的是Student集合
    
             User s = (User)it.next();
    
             String a = s.getName();
             
             System.out.println(a);
    
         }
    
         //提交事务
    
         tx.commit();
    
         session.close();
    
     }
     
     static void sqlQueryAddScalar(){
      
      //返回Object[]的遍历
      
      Session session=HibernateUtil.getSession();
      
      Transaction transaction=session.beginTransaction();
      
      String sql="select * from user";
      
      SQLQuery s=(SQLQuery) session.createSQLQuery(sql); //.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
      
      s.addScalar("id",Hibernate.INTEGER); //列名, 数据类型
      s.addScalar("name",Hibernate.STRING);
      
      List list=s.list();
     
      Object[] objects=(Object[])list.get(0);
     
      System.out.println(objects[0]);
      System.out.println(objects[1]);
      
      //用MAP
      
      SQLQuery ss=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
      
      ss.addScalar("id",Hibernate.INTEGER);
      ss.addScalar("name",Hibernate.STRING);
      
      List list2=ss.list();
      
      Map map = (Map) list2.get(0); 
      
      System.out.println(map.get("name"));
      System.out.println(map.get("id"));
      
      //用LIST
    
      SQLQuery s3=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.TO_LIST);
      
      s3.addScalar("id",Hibernate.INTEGER);
      s3.addScalar("name",Hibernate.STRING);
      
      List list3=s3.list();
     
      List list4=(List)list3.get(0);
     
      System.out.println(list4.get(0));
      System.out.println(list4.get(1));
      
      //用自定义的bean
      
      SQLQuery e=(SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(SqlQueryBean.class));
      
      e.addScalar("id",Hibernate.INTEGER);
      e.addScalar("name",Hibernate.STRING);
      
      List r=e.list();
     
      SqlQueryBean sqb=(SqlQueryBean)r.get(0);
     
      System.out.println(sqb.getId());
      System.out.println(sqb.getName());
      }
     
    
    }

    分享

  • 相关阅读:
    hdu 5007 水题 (2014西安网赛A题)
    hdu 1698 线段树(成段替换 区间求和)
    poj 3468 线段树 成段增减 区间求和
    hdu 2795 公告板 (单点最值)
    UVaLive 6833 Miscalculation (表达式计算)
    UVaLive 6832 Bit String Reordering (模拟)
    CodeForces 124C Prime Permutation (数论+贪心)
    SPOJ BALNUM (数位DP)
    CodeForces 628D Magic Numbers (数位DP)
    POJ 3252 Round Numbers (数位DP)
  • 原文地址:https://www.cnblogs.com/Venom/p/3914031.html
Copyright © 2011-2022 走看看