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

使用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;
}

更新时间:2020-06-24 14:01:50

本文由 新逸Cary 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://blog.xinac.cn/archives/hibernate-sql-query.html
最后更新:2020-06-24 14:01:50

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×