查询数据库,取的数据的几种方法
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();