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

本文介绍使用HQL及JDBC进行数据库查询的具体方法,包括HQL查询单表及多表联查、JDBC查询单条记录及批量操作等实战技巧。

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();

 

 

转载于:https://www.cnblogs.com/cheeper/p/3314009.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值