hibernate的hql查询,用getHibernateTemplate能满足一般的数据查询,但需要自定义字段的时候,无需另外写sql查询,可以用的是hql的select new的方法,配合VO类。
例子:
Entity实体类:
城市 [Cities]
|--id (主键ID)
|--cityid (城市编码)
|--city (城市名)
|--proviceid (省编码)
|--pinyin (拼音)
Vo类
城市+分类字母[CitiesVo]
|--cities (城市实体类)
|--zimu (首字母)
public class CitiesVo{
private Cities cities;
private String zimu;
//务必要构造函数
public CitiesVo(Cities cities, String zimu) {
this.cities=cities;
this.zimu = zimu;
}
//包含getter ,setter
}
Dao
@Override
public List<CitiesVo> findCitiesByZimu() {
String hql = "SELECT new cn.project.vo.CitiesVo(c,substring(c.pinyin,1,1)) from Cities c order by pinyin";
List<CitiesVo> list = this.getHibernateTemplate().find(hql);
return list;
}
关键这个select new 类路径 要详细路径,不然会找不到类
然后构造函数是VO的构造函数,自定义字段不用写别名,按顺序填好
自定义字段可以用各种函数,这样很好的扩展了基本查询,前端也能规范读取数据。