String sql ="select * from icp_main_msg m inner join icp_website_msg w on m.icp_main_id=w.icp_main_id";
list = session.createSQLQuery(sql).list();
return list; 这里我不懂如果是这样 list里 返回的是什么?
我要怎么才能把list解析出来?
for(int i = 0 ; i<list.size; i++){
我应该在这里放什么类型???XXX = list.get(i);
} wmlearnjava 谢谢大家了
list = session.createSQLQuery(sql).list();
return list; 这里我不懂如果是这样 list里 返回的是什么?
我要怎么才能把list解析出来?
for(int i = 0 ; i<list.size; i++){
我应该在这里放什么类型???XXX = list.get(i);
} wmlearnjava 谢谢大家了
例如:
List list=方法返回的list;
for (Iterator it = list.iterator(); it.hasNext() ; )
{
Object[] object = (Object[])it.next();
for(int i=0;i<object.length;i++) {
log.debug("==============>>>"+((Shpqxx)object[i]).getMc());
}
这句SQL里面的表icp_main_msg和icp_website_msg,假定分别对应实体对象MainMsg和WebMsg。String sql ="select {m.*},{w.*} from icp_main_msg m inner join icp_website_msg w on m.icp_main_id=w.icp_main_id";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("m",MainMsg.class);
query.addEntity("w",WebMsg.class);
List results = query.list();这样你得到的List里面还是一系列Object[]数组,不过现在每个数中包含两个对象,MainMsg和WebMsg的实例。
Object[] objs=(Object[])list.get(i);
for(int j=0;j<objs.length;j++){
system.out.println(objs[j]);
}
}
// query.setLong(0, id);
// List result = query.list();
// Iterator it = result.iterator();
// while (it.hasNext()) {
// Object[] results = (Object[]) it.next();
// Bid bid = (Bid) results[0];
// tender = (Tender) results[1];
// }
*包括两张表的字段T泛型类也要和*对应.
一般的情况都有hql解决,如果不会可以学,不然的话使用hibernate没有什么意义了
public <T> List<T> selByNativeQuery(T t, String sql, Object args[]) {
Session session = null;
try {
session = getSession();
SQLQuery query = session.createSQLQuery(sql);// 创建本地查询对象 参数为sql字符串语句
query.addEntity(t.getClass());// 把返回值转换成指定的实体对象
//query.addJoin("a", "a");
setParameters(query, args);
List<T> list = (List<T>) query.list();
return list;
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}