查询数据库,取的数据的几种方法

1,

    a)使用hql语句直接查询整个model,取值时候需要向下转型:

        List list= session.createQuery("select s from Student s where s.name like ?").setParameter(0, "%"+param+"%").list();

        for(Iterator it = list.iterator();it.hasNext();) {
                  Student s = (Student)it.next();
                  System.out.println(s.getName());
         }

     b) 使用hql语句查询model中某些值

       List list = session.createQuery("select new Student(name,id) from Student").list() ;

        for(Iterator it = list.iterator();it.hasNext();) {
               Object obj = it.next();
               Student s = (Student)obj;   

               System.out.println(s.getName()+" "+s.getId());
        }

     或者

   List list = session.createQuery("select s.name,c.name from Student s left join s.classes c where c.id=13 ").list();

    for(Iterator it = list.iterator();it.hasNext();) {
        Object[] objs = (Object[])it.next();
        System.out.println(objs[0]+" "+objs[1]);
   }

   c)  使用hql 多表查询

    List list = session.createQuery("from Dqfx a ,PersonInfo b").list();

    for(int i=0;i<list.size();i++){
        Object[] objs=(Object[])list.get(i);
        Dqfx dqfx=(Dqfx)objs[0];
        PersonInfo personInfo =(PersonInfo)objs[1];

     }

2,使用原生态JDBC

    a)    PreparedStatement ps = con.prepareStatement("select * from emp");

           ResultSet rs = ps.executeQuery();

          while(rs.next()) {
        //查询一条记录即封装成一个对象
         EmpDTO dto = new EmpDTO();
        dto.setId(rs.getInt("id"));
           dto.setName(rs.getString("name"));
           dto.setAge(rs.getInt("age"));
           dto.setSex(rs.getString("sex"));
           dto.setSalary(rs.getFloat("salary"));
    
         //千万记住加入集合
          emps.add(dto);
       }

       或者

        PreparedStatement ps = con.prepareStatement("select count(*) from emp");

        ResultSet rs = ps.executeQuery();

     if(rs.next()) {
                totalRecords = rs.getLong(1);
          }

    b)  使用jdbc元数据

    ps = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,
     ResultSet.CONCUR_READ_ONLY);
   ResultSet rs = ps.executeQuery();
   int i = 0;
   rs.last();   //到最后一行
   i = rs.getRow();
   String partnerName[] = new String[i];
    i = 0;
   rs.beforeFirst();   //回到第一行
   while (rs.next()) {
    partnerName[i] = rs.getString("PARTNER_NAME");
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String aMarryDate = format.format(rs.getDate("MARRY_DATE"));
    marryDate[i] = aMarryDate;
    appNo[i] = rs.getString("APP_NO");

    i++;
   }

   使用jdbc批处理    ps.addBatch();

 

 

posted @ 2013-09-11 10:21  Little_cheeper  阅读(640)  评论(0编辑  收藏  举报