zoukankan      html  css  js  c++  java
  • hibernate 之 sql查询

    如果用hibernate执行原生sql进行数据查询可以调用

    SQLQuery query = getSession().createSQLQuery(sql);

    然后再执行

    query.list()

    这样便可以将结果查询出来,查这样查询出来的结果。是由值数组组成的list。

    可一般我们想要的结果应该是以字段名为key的map组成的list或者是表名对应的对象组成的list。

    这两种结果均可通过hibernate提供的api来实现

    对于第一种想要的结果:

    可以通过重写AliasedTupleSubsetResultTransformer来实现,如果下面的代码

    AliasedTupleSubsetResultTransformer f = new AliasedTupleSubsetResultTransformer() {
                
                @Override
                public boolean isTransformedValueATupleElement(String[] arg0, int arg1) {
                 
                    return false;
                }
                
                
                @Override//重写这个方法是关键
                public Object transformTuple(Object[] tuple/*值数组*/, String[] aliases/*字段数组*/) { 
                    Map<String, Object> map = new HashMap<String, Object>();
                    for(int i = 0; i < aliases.length; i ++){
                        
                        map.put(aliases[i].toLowerCase(), tuple[i]);
                         
                    }
                    return map;
                }
            };
             List<Map<String, Object>> resultList = query.setResultTransformer(f).list();

    对于第二种想要的结果即转换成对应类的对象list,这种留给有心人去实现吧,

    这种应该通过扩展SQLQuery.setResultSetMapping()去实现的。

  • 相关阅读:
    Mybatis批处理
    Mybatis兼容C3P0连接池
    一对多,多对一查询
    缓存
    动态sql
    mybatis 日志记录
    python学习day07-encode和decode
    python学习day07---三级目录优化
    python学习day06练习---三级目录
    python学习day06--02字典增删差改以及字符串的一些方法
  • 原文地址:https://www.cnblogs.com/silentjesse/p/3633924.html
Copyright © 2011-2022 走看看