• 【JavaEE】之MyBatis输出映射


      MyBatis中的输出映射有两种:resultType和resultMap。

    1、resultType

      使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指定的POJO的某个属性名称相同时,才会映射成功。如果查询出来的列名和POJO中的属性名全部不一致,就不会映射成任何POJO对象(解决这个问题可以使用下面介绍的resultMap映射)。

      resultType的类型可以是HashMap,这样查询出来的列名就是HashMap中的key。

    2、resultMap

      MyBatis使用resultMap可以完成高级输出结果的映射。如果查询出来的列名和POJO中的属性名不一致,可以通过定义一个resultMap对列名和POJO属性名之间做一个映射关系。resultMap的具体代码如下:
    定义resultMap的代码:
    <!-- 自定义ResultMap:自定义ResultMap的作用是将查询出来的列名和pojo的属性名做一个映射关系 -->
    <!-- type是最终映射到的pojo对象类型,可以是属性名;id是对ResultMap的唯一标识 -->
    <resultMap type="emp" id="employeeMap">
        <!-- id标签和result标签中都有column和property两个属性,前者是查询出来的列名,后者是映射到的pojo中的属性名 -->
        <!-- id表示查询结果中的主键列的映射关系 -->
        <id column="eid" property="empNo" />
        <!-- result表示查询结果中的普通列的映射关系 -->
        <result column="username" property="eName" />
    </resultMap>
      Statement中的代码:
    <!-- 使用resultMap输出员工信息,resultMap的属性值是自定义的resultMap的id -->
    <!-- 注意:如果resultMap定义在其他mapper文件中,则需要在resultMap的id前面加上所在mapper文件的namespace值 -->
    <select id="findEmployeeListWithResultMap" resultMap="employeeMap">
        SELECT empno eid, ename username FROM EMP
    </select>
      Mapper接口中的代码:
    List<Employee> findEmployeeListWithResultMap() throws Exception;
      测试代码:
    // 使用resultMap输出员工信息
    @Test
    public void testFindEmployeeListWithResultMap() throws Exception {
        SqlSession session = factory.openSession();
        EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
        List<Employee> list = mapper.findEmployeeListWithResultMap();
        for (Employee e : list) {
            System.out.println(e);
        }
    }
  • 相关阅读:
    设计模式
    IPC- Posix与system v
    squashfs文件系统
    各种根文件系统
    SPI通讯协议
    tty各种设备的情况
    Linux系统调用过程
    uImage和zImage的区别
    jquery可见性选择器(匹配匹配所有显示的元素)
    jquery可见性选择器(匹配所有隐藏的元素)
  • 原文地址:https://www.cnblogs.com/itgungnir/p/6211332.html
Copyright © 2020-2023  润新知