mybatis/mybatis plus的实体类字段名称与数据库字段匹配失败的解决办法

当数据库字段名称与Mybatis Plus实体类字段不一致时,导致字段绑定失败。通过自定义查询并指定resultMap在XML配置文件中解决此问题,避免修改数据库字段。

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

问题

数据库表字段名称类似这样
在这里插入图片描述
然而根据SQL逆向生成的实体类,变量名只可能是这样:
在这里插入图片描述
注:此处使用工具http://java.bejson.com/generator/生成的实体类。
实际运行时会发现,实体类与数据库表字段绑定失败、匹配不到字段,原因在于mybatis/mybatis plus匹配变量时按照ext_attr4去找,而数据库中则是ext_attr_4
在这里插入图片描述

解决

由于我遇到的情况,无法修改数据库字段,只能从mybatis/mybatis plus这一层着手。使用自定义查询,在XML层中自己手工指定resultMap类型:


    <resultMap id="selectMemberByIdResultMap" type="com.br.employee.bean.model.oa.OaOrgMember">
…………………………
        <result property="extAttr1" column="EXT_ATTR_1"/>
        <result property="extAttr2" column="EXT_ATTR_2"/>
        <result property="extAttr3" column="EXT_ATTR_3"/>
        <result property="extAttr4" column="EXT_ATTR_4"/>
…………………………
    </resultMap>
    <select id="selectMemberById" parameterType="java.lang.String" resultMap="selectMemberByIdResultMap">
        SELECT
		id, 
        `EXT_ATTR_1`,
        `EXT_ATTR_2`,
        `EXT_ATTR_3`,
        `EXT_ATTR_4`,
…………………………………………
        FROM XXXXX m
        where 1=1
        <if test="id!= null and id!= ''">
            and m.id = #{id}
        </if>
    </select>

参考资料

-Mybatis 当实体属性与数据库字段不一致时的解决方案

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值