14_输出映射2_resultMap

【resultMap】

如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间做一个映射列表。

1.定义resultMap,(在UserMapper.xml文件中)

     <!-- 
         定义resultMap 
         将SELECT id _id,username _username,birthday _birthday,address _address和User类中的属性做一个映射
         type: resultType最终映射的java对象类型,可以使用别名
         id:对resultMap的唯一标示
     -->
     <resultMap type="user" id="userResultMap">
         <!-- 
             id:表示查询结果集中唯一标识
             column:查询出来的列名
             property:type指定的pojo类型中的属性名
          -->
          <id column="id_" property="id"/>
          <!-- 
              result:对普通列名称的映射定义
           -->
          <result column="_username" property="username"/>
          <result column="_birthday" property="birthday"/>
          <result column="_address" property="address"/>
     </resultMap>

2.使用resultMap作为statement的输出映射(该案例在UserMap.xml中,后面也不一定在同一个xml文件中,不在同一个文件中是要加namespace)

     <select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">
         SELECT id _id,username _username,birthday _birthday,address _address from USER WHERE id=#{id}
     </select>

 【不要忘了UserMapper接口中对应的方法】

【测试代码】

    @Test 
    public void testFindUserByIdResultMap() throws Exception {  
        
        SqlSession sqlSession =sqlSessionFactory.openSession();
        
        //创建一个UserMapper对象,Mybatis自动生成mapper代理对象
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
        
        //调用userMapper的方法
        User user = userMapper.findUserByIdResultMap(3); 
        
        System.out.println(user.toString());  
    }

【运行结果】

原文地址:https://www.cnblogs.com/HigginCui/p/5747844.html