zoukankan      html  css  js  c++  java
  • mybatis中处理结果集映射

    单行结果集映射:

    接口中方法返回值定义为Map类型,sql语句的resultType属性设置为map即可。这种情况默认把列名作为key,列中的值作为value。

    也就是说用map<Strirng,Object>接收,一个map集合对应查询结果所封装的一个对象(一行数据对应一个对象)

    多行结果集映射:

    List<Map<String,Object>>接收,存放查询出来的多个对象

    如果有一些特殊的情况,比如需要使用id值作为key,把一行数据封装成的对象作为value放到map中的话,需要使用下面的方式:

    注意,这时候需要使用字符串来调用sql语句。

    <select id="findAllUsers" resultType="User"> 
    select id,name,gender from t_user 
    </select>
    @Test
    public void test_findAllUsers(){
    
    SqlSession sqlSession = null;
    try {
    sqlSession = MyBatisSqlSessionFactory.openSession();
    
    Map<Integer, User> map = sqlSession.selectMap("com.briup.mappers.SpecialMapper.findAllUsers","id");
    
    map.forEach((k,v)->System.out.println(k+" : "+v));
    
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    这里map将id作为key值,而每行数据封装成的User对象作为value值,sqlSession.selectMap()可以用我们指定的列作为key,默认使用封装好的对象作为value。也就是key我们可以指定,但是value只能是当前这条数据封装成的对象。

    Map<Integer, User> map = sqlSession.selectMap("com.briup.mappers.SpecialMapper.findAllUsers","id");

    其实核心只有以上一句代码,指定id为Key

    mybatis使用ResultHandler自定义结果集ResultSet

    @Test
    public void test_ResultHandler(){
    final Map<Integer,String> map = new HashMap<Integer, String>(); 
    SqlSession sqlSession = null;
    try {
    sqlSession = MyBatisSqlSessionFactory.openSession();
    
    
    sqlSession.select("com.briup.mappers.SpecialMapper.findAllUsers", new ResultHandler<User>() {
    
    
    @Override
    public void handleResult(ResultContext<? extends User> resultContext) {
    //获取当这条数据封装好的User对象
    User user = resultContext.getResultObject(); 
    //按照自己的要求的方式进行封装
    map.put(user.getId(), user.getName()); 
    }
    });
    
    
    map.forEach((k,v)->System.out.println(k+" : "+v));
    
    
    } catch (Exception e) {
    e.printStackTrace();
    }
    
    
    }
  • 相关阅读:
    i=i+2 与i+=2
    如何浏览github上所有的公开的项目?
    在ubuntu怎样修改默认的编码格式
    链式结构实现堆排序
    直接插入排序的哨兵的作用
    lk进kernel
    比劫劫财引发的灾如何化解呢?
    java:Map借口及其子类HashMap二
    java:Map借口及其子类
    java:集合输出之foreach输出三
  • 原文地址:https://www.cnblogs.com/Magic-Li/p/11687631.html
Copyright © 2011-2022 走看看