[mybatis]ResultMap输出结果映射

来源:互联网 发布:linux 日志分析命令 编辑:程序博客网 时间:2024/06/04 19:27

为什么会有ResultMap?

    <!--         ResultMap :            在sql查询中,如果给查询结果的列名定义了别名,            在用resultType进行普通映射时,是无法给当前类属性赋值的,            由于列名的别名与类的属性名不一致,所以产生了ResultMap映射,            用来映射表的别名与类属性    -->

使用ResultMap,在mapper.xml中配置 :

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--     namespace : 命名空间为UserMapper接口的完全限定名--><mapper namespace="mapper.UserMapper" >    <!--         定义ResultMap :            将SELECT id id_ , username username_ FROM USER             查询出来的列名和User类中的属性做一个映射            type: resultMap 最终映射成的Java类型,                    可以使用总配置文件中xml定义的别名            id  : 对resultMap的唯一标识    -->    <resultMap type="user" id="userResultMap">        <!--             id表示对id的唯一标识 :                column : 查询出来的列名                property :指定pojo类中的属性名        -->        <id column="id_" property="id" />        <!--             result表示对普通列的映射关系                column : 查询出来的列名                property :指定pojo类中的属性名                  -->        <result column="username_" property="username" />    </resultMap>    <!--         使用ResultMap进行输出映射        resultMap : 指定定义的resultMap的id,                    如果这个resultMap在其他mapper文件被引用,                    前面应加namespace命名空间,                    例如:(resultMap="mapper.UserMapper.userResultMap")    -->    <select id="findUserByIdResultMap" parameterType="int" resultMap="userResultMap">        SELECT id id_ , username username_ FROM USER WHERE ID=#{id}    </select></mapper>

Mapper接口中的方法定义:

    //根据id查找用户,返回resultMap    public User findUserByIdResultMap (int id) ;

方法测试 :

    //根据id查找用户,返回resultMap    @Test    public void testFindUserByIdResultMap (){        //创建session        SqlSession session = sessionFactory.openSession();        //通过session获取mapper代理        UserMapper mapper = session.getMapper(UserMapper.class);        //调用代理接口中的方法        User user = mapper.findUserByIdResultMap(3);        //输出user        System.out.println(user);    }   
1 0