前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MyBatis两张表字段名相同产生的问题

MyBatis两张表字段名相同产生的问题

作者头像
庞小明
发布2018-03-07 17:59:57
2.2K0
发布2018-03-07 17:59:57
举报
文章被收录于专栏:pangguomingpangguoming

MyBatis两张表字段名相同, 会导致bean属性都映射为第一个表的列,

解决方法:

通过设置别名的方式让其产生区别,如

代码语言:javascript
复制
<select id="queryBySekillId" resultMap="successKilled">
 
        select
            sk.seckill_id  "seckill_id",
            sk.user_phone  "user_phone",
            sk.state  "state",
            sk.create_time  "create_time",
            s.seckill_id  "seckill_id",
            s.name  "name",
            s.number  "number",
            s.start_time  "start_time",
            s.end_time  "end_time",
            <strong>s.create_time  "screate_time"</strong>
        from success_killed sk
        inner join seckill s
        on sk.seckill_id = s.seckill_id
        where sk.seckill_id = #{seckill_id} ;
 
</select>

  上 success_killed表和seckill表中有相同字段 create_time (id字段其实确实是相同的故在此忽略),通过将表seckill的create_time字段命名为screate_time用以区别。

代码语言:javascript
复制
<resultMap type="Seckill" id="seckill">
        <id column="seckill_id"  property="seckill_id"/>
        <result column="name" property="name"/>
        <result column="number" property="number"/>
        <result column="start_time" property="start_time" />
        <result column="end_time"  property="end_time"/>
        <result column="screate_time"  property="create_time" /> 
</resultMap>

  同时将 resultMap中该段的 column 属性该为 screate_time.故只要让查询出的字段名与column相同,它会通过映射找到相应属性进行封装。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档