Hibernate 执行纯SQL语句查询数据代码示例

新逸网络 1.3K 0

 

使用Hibernate执行纯SQL的场景并不多,大致有以下几种情况:

  1. Hibernate默认查询表中的所有字段,如果字段过多,性能将大幅降低
  2. 关联查询,由其是关联多张表查询时,纯SQL效果更好
  3. 使用一些数据库的汇聚函数查询时,纯SQL可能更合适
  4. 其它的一些适用于纯SQL查询的情况

示例代码:

private List<String> getUserIds() {
    List<String> userIds = new ArrayList<String>();

    String sql = "SELECT ID,NAME,ACCOUNT FROM VO_USERS";
    SQLQuery query = getSession().createSQLQuery(sql);
    query.setResultTransformer(new ResultTransformer() {
        @Override
        public Object transformTuple(Object[] arg0, String[] arg1) {
            Map<String, Object> map = new LinkedHashMap<String, Object>();
            int i = 0;
            for (String column : arg1) {
                map.put(column, arg0[i++]);
            }
            return map;
        }

        @Override
        public List transformList(List arg0) {
            return arg0;
        }
    });

    List list = query.list();
    for (Object object : list) {
        Map map = (Map) object;
        userIds.add((String) map.get("ID"));
    }
    getHibernateTemplate().flush();
    getHibernateTemplate().clear();

    return userIds;
}

发表评论 取消回复
表情 图片 链接 代码

分享