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();
    }
    
    
    }
  • 相关阅读:
    web前端的发展态势
    AngularJs 简单入门
    css代码优化篇
    git提交报错:Please make sure you have the correct access rights and the repository exists.
    Activiti工作流框架学习
    遍历map集合的4种方法
    js设置日期、月份增加减少
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    webservice_rest接口_学习笔记
    相互匹配两个list集合+动态匹配${}参数
  • 原文地址:https://www.cnblogs.com/Magic-Li/p/11687631.html
Copyright © 2011-2022 走看看