首页 > 编程开发 > Java    日期:2022-12-30 / 浏览

在MyBatis的映射中有column这么一个属性,我一直以为它映射的是数据库表中的列名,但经过学习发现他似乎映射的是SQL语句中的列名,或者说是查询结果所得到的表的列名。

下面我们进行一个实验。

首先我们有一张user表:

详解MyBatis中column属性的总结

我还有一个实体类User,有着id、username、password三个属性。

我们的UserMapper接口中有着获取这张表单所有数据的方法。

我们现在在UserMapper.mxl中这样写:

 <select id="getUsers" resultType="User">
        select * from mybaties.user
    </select>

或者这样写:

<select id="getUsers" resultType="User">
        select id, username, password from mybaties.user
    </select>

这两句完全相同,我们去测试一下看看结果:

详解MyBatis中column属性的总结

成功获取了所有信息。

现在给password起个别名pwd,在UserMapper.mxl中这样写:

  <select id="getUsers" resultType="User">
        select id, username, password as pwd from mybaties.user
    </select>

此时我们再去运行:

详解MyBatis中column属性的总结

我们会发现password竟然变成了null。

此时我们去配置一个结果映射,让pwd映射到我们的属性password:

 <resultMap id="um" type="User">
        <result property="password" column="pwd"/>
    </resultMap>

    <select id="getUsers" resultMap="um">
        select id, username, password as pwd from mybaties.user
    </select>

测试结果:

详解MyBatis中column属性的总结

没有问题。

得出结论:映射到属性的字段名是查询结果的列名,而不是数据库中已存在的表的列名。

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章