resultMap结果映射


查询结果的列名和Java对象的属性名对应不上怎么办?
*第一种方式:as给列名起别名
*第二种方式:使用resultMap进行结果映射
*第三种方式:是否开启驼峰命名自动映射(配置settings)


一、resulrMap结果映射

可以专门定义一个结果映射,在这个结果映射当中指定数据库表的字段名和Java类的属性名的对应关系。
接口

    /**
     * 查询所有的student信息,使用resultMap标签进行结果映射
     * @return
     */
    List<Student> selectAllBtReaultMap();

mapper.xml
*select标签中的resultMap属性,用来指定使用哪个结果映射 resultMap的值是resultMap的id
*resultMap标签中的type属性,用来指定POJO类的类名;id属性:指定resultMap的唯一标识,这个id将来要在select标签中使用。如果有主键,建议这里配置一个id标签,注意:这不是必须的 官方解释:这样的配置可以让mybatis提高效率

如果列column和property是一样的,则可以省略

    <!--
        1、不需要再起别名,可以专门定义一个结果映射,在这个结果映射当中指定数据库表的字段名和Java类的属性名的对应关系
        2、type属性:用来指定POJO类的类名
        3、id属性:指定resultMap的唯一标识,这个id将来要在select标签种使用
    -->
    <resultMap id="studentResultMap" type="student">
        <id property="id" column="id"></id>
        <!--如果数据库表中有主键,一般都是有主键,否则不符合数据库设计第一范式-->
        <!--如果有主键,建议这里配置一个id标签,注意:这不是必须的 官方解释:这样的配置可以让mybatis提高效率-->

        <!--property填写POJO类的属性名-->
        <!--column填写数据库表的字段名-->
        <result property="name" column="name"></result>
        <result property="age" column="age"></result>
        <result property="height" column="height"></result>
        <result property="birth" column="birth"></result>
        <result property="sex" column="sex"></result>
    </resultMap>
    <!--select标签中的resultMap属性,用来指定使用哪个结果映射 resultMap的值是resultMap的id-->
    <select id="selectAllBtReaultMap" resultMap="studentResultMap">
        select * from t_student
    </select>

测试

    @Test
    public void testSelectAllResultMap() throws IOException, ParseException {
        SqlSession session = SqlSessionUtil.openSession();
        StudentMapper mapper = session.getMapper(StudentMapper.class);
        List<Student> students = mapper.selectAllBtReaultMap();
        students.forEach(student -> {
            System.out.println(student);
        });
        session.close();
    }

运行结果:

在这里插入图片描述

二、驼峰命名自动映射

使用这种机制的前提是:属性名遵循Java的命名规范,数据库表的列名遵循SQL的命名规范。
Java命名规范:首字母小写,后面每个单词首字母大写,遵循驼峰命名方式。
SQL命名规范:全部小写,单词之间采用下划线分割
例如:
属性名:carNum 数据库表的列名:car_num
启用该功能:在mybatis-config.xml文件中进行配置:

    <settings> <!--放在properties标签后面-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

在这里插入图片描述
https://mybatis.net.cn/configuration.html#settings(mybatis官方中文学习手册)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值