您的位置:首页 > 数据库

Hibernate使用SQL进行查询

2016-07-19 11:00 295 查看
使用SQL语句进行查询的步骤:

得到sessionFactory

得到session

使用sql语句创建查询createQuery

规范返回值的类型,使用addScalar函数,第一个参数必须与ResultSet中的字段一一对应,区分大小写。

使用实例类接受返回的数据

使用list()进行进行查询

演示代码如下:

public List<VideoSchedule> getVideoScheduleList() {
String hqlQueryString="select a.name areaname,c.camera_id cameraid,c.name cameraname,v.guid,v.enable enableflag from camera_info as c inner join area as a on a.area_id=c.area_id inner join vrm_record_schedule as v on c.camera_id=v.camera_id;";
Session session=getHibernateTemplate().getSessionFactory().openSession();
SQLQuery query=session.createSQLQuery(hqlQueryString);
query.addScalar("areaname",StandardBasicTypes.STRING);
query.addScalar("cameraid", StandardBasicTypes.STRING);
query.addScalar("cameraname", StandardBasicTypes.STRING);
query.addScalar("guid", StandardBasicTypes.STRING);
query.addScalar("enableflag", StandardBasicTypes.STRING);
query.setResultTransformer(Transformers.aliasToBean(VideoSchedule.class));
List<VideoSchedule> videoScheduleList=query.list();
return videoScheduleList;
}


用来接受数据的实体类如下:

public class VideoSchedule {

private String areaName;

private String cameraId;

private String cameraName;

private String enableFlag;

private String guid;

//get,set方法
}


使用的SQL语句,就不用在xxx.hbm.xml语句中定义实体类和数据库字段的一一对应关系,因为在上面的addScalar中已经这么做了。

使用的是hibernate 3,大小写是区分的。我们常用的属性命名方式是驼峰形式的,这里会带来一点不方便,如果有解决方案的麻烦指出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate sql addScalar