17.MyBatis学习--映射文件_select_resultMap_自定义结果映射规则

在前面的文章中,提到过,项目里面的javaBean属性名与数据库表列名不对应的问题(例如,数据库表中last_name属性,在javaBean中,属性名为lastName),在前文中,我们通过在mybatis的全局配置文件中通过设置驼峰命名的方式解决了这个问题。在这片文章中,将采用另一种方式来解决这个问题。

通过在全局配置文件中设置

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

通过resultMap自定义结果映射规则

在 前面,气门都是用resultType来设置返回类型,但是,在中还可以通过resultMap自定义结果映射规则。
示例:

  1. 在dao接口(示例使用的是EmployeeMapper.java)中创建根据id查询一条员工记录方法。
   public Employee getEmpById(Integer id);
  1. 在EmployeeMapper接口映射的sql映射文件中,通过<resultMap id="" type=""></resultMap>定义自定义结果映射规则。其中id:唯一id方便引用,type:自定义规则的java类型。
<mapper namespace="com.fzl.mybatis.dao.EmployeeMapping">

    <resultMap id="MyEmp" type="com.fzl.mybatis.bean.Employee">
<!--
        指定主键列的封装规则
        id定义主键会底层有优化;
        column:指定哪一列
        property:指定对应的JavaBean属性
-->
        <id column="id" property="id"/>
        <!-- 定义普通列封装规则-->
        <result column="last_name" property="lastName" />
<!--                其他不指定的列会自动封装,我们只要写resultMap就把全部的映射规则都写上-->
        <result column="gender" property="gender"/>
        <result column="email" property="email"/>
    </resultMap>

    <select id="getEmpById" resultMap="MyEmp">
        select * from tbl_employee where id = #{id}
    </select>
</mapper>
  1. 测试
public SqlSessionFactory getSqlSessionFactory() throws IOException {
        String resource = "MyBatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return  sqlSessionFactory;
    }

    @Test
    public void test1() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession openSession = sqlSessionFactory.openSession();
        try{
            EmployeeMappingPlugs mapper = openSession.getMapper(EmployeeMappingPlugs.class);
            Employee emp = mapper.getEmpById(1);
            System.out.println(emp);
        }finally{
            openSession.close();
        }
    }
  1. 测试结果
    17.MyBatis学习--映射文件_select_resultMap_自定义结果映射规则
上一篇:springboot整合Mybatis 之 创建对象SqlSessionFactory和SqlSession(一)


下一篇:SqlSession与SqlSessionFactory到底是什么关系?