(四)处理数据库与bean属性不一致情况

本文介绍了如何在不修改数据库表结构和Bean的情况下,通过MyBatis映射文件解决字段名与属性名不一致的问题。主要方法包括在SQL中设置别名和使用resultMap标签配置property与column的映射。同时,讨论了MyBatis如何将SQL执行结果转换为目标对象并返回,提到了两种映射形式:resultMap标签定义映射和利用SQL别名功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比如数据库的表结构:

bean结构:

在不修改表、bean结构基础上对映射文件进行修改即可(重命名)

一、在SQL中设置别名

stuCountry   stu_country  

<mapper namespace="test.studentMapper">
   
    <select id="selectUserByID" parameterType="int" resultType="test.student">
        select id,name,age,stuCountry stu_country from `tb_Student` where id = #{id}
    </select>
</mapper>

二、使用resultMap标签配置property属性和column属性的映射

注意此时用select *

 <select id="selectUserByID" parameterType="int" resultMap="stu">
         <!-- 当表和数据库属性不一致时,要重命名属性 -->
        select * from `tb_Student` where id = #{id}
    </select>
    <resultMap type="student" id="stu">
      <id property="id" column="id" />
      <result property="name" column="name" />
      <result property="age" column="age" />
      <result property="stu_country" column="stuCountry"/>
      <result property="stuHobbys" column="stu_Hobbys"/>
    </resultMap>

Q:mybatis是如何将SQL执行结果封装成目标对象并返回的?都有哪些映射形式?

第一种是使用<resultMap>标签,逐一定义数据库列名和对象属性名之间的映射关系

第二种是使用SQL列的别名功能,将列的别名书写成对象属性名

有了列名与属性名的映射关系后,mybatis通过反射创建对象,同时使用反射给对象的属性逐一赋值返回,那些找不到映射关系的属性,是无法完成赋值的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值