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

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

解决方法:

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

<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用以区别。

<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相同,它会通过映射找到相应属性进行封装。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法与数据结构

实验9-4 编写一个存储过程proc_test_date1

在TestDB数据库中,编写一个存储过程proc_test_date1,要求如下:

653
来自专栏一个会写诗的程序员的博客

mybatis @Select注解中当参数为空则不添加该参数的判断

这样整个语句是写死的,必须有2个参数,在这种模式下,如何能实现根据room和mydate是否为空来动态的拼写sql语句 比如当mydate=""

671
来自专栏运维技术迷

MySQL数据库(九):修改表结构

前言: 1.修改表结构的时候受表中已存储数据的限制 2.查看表结构 desc 表名; 1.修改表结构 格式: alter  table  表名  修改动...

3245
来自专栏栗霖积跬步之旅

第八章:用通配符进行过滤

表名:products  字段:product_id、product_name、product_price、vend_id(供应商) 1.LIKE操作符: 通配...

1805
来自专栏乐沙弥的世界

MongoDB 多键索引

更多参考 MongoDB 单键(列)索引 MongoDB 复合索引 MongoDB执行计划获取(db.collection.explain()) ...

773
来自专栏Java成神之路

PL/SQL学习笔记_01_基础:变量、流程控制

PL/SQL语句可以在Oracle客户端的 SQL窗口或者 command  窗口中运行

652
来自专栏小筱月

SSM框架的sql中参数注入(#和$的区别)

ORDER BY ${order} 和模糊查询 username LIKE '%${username}%' 是用$符号,其他的大多是用 #{} 来获取传递的参数...

942
来自专栏互联网杂技

mysql主键primary key与唯一键unique key

主键 每张表中只能有一个主键 主键自动回not null 主键的设置方式是创建的时候加上:primary key 一般主键设置为自动增加,auto_increm...

33415
来自专栏程序员的SOD蜜

获取SqlServer存储过程定义的3种方法

第一种: declare @p_text varchar(max) SELECT @p_text= text FROM syscomments WHERE...

2317
来自专栏Python

Django中Q查询及Q()对象

问题 一般我们在Django程序中查询数据库操作都是在QuerySet里进行进行,例如下面代码: >>> q1 = Entry.objects.filter(h...

2005

扫码关注云+社区