MyBatis两张表字段名相同产生的问题
2024-08-27 12:05:15
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相同,它会通过映射找到相应属性进行封装。
最新文章
- What technical details should a programmer of a web application consider before making the site public?
- informix(懒得通用)
- Docker私服仓库push 错误
- jQuery添加options点击事件并传值
- C++实现VPN工具之VPN错误代码大全
- C语言指针学习(续)
- 土地购买 usaco 斜率优化
- laravel5通过auth.attempt事件加入登陆验证码
- 理解Android的startservice和bindservice(转)
- springBoot2.0+redis+fastJson+自定义注解实现方法上添加过期时间
- POJ 2245 Addition Chains(算竞进阶习题)
- .NET 同步与异步 之 线程安全的集合 (十一)
- VS2017上在线和离线安装Qt插件(在线安装)
- 免费的剪贴板工具Ditto安装与使用
- Delphi TMemoryStream写入到字符串和字符串写入到流
- 20155205 《Java程序设计》0510课上实践博客
- Linux 查看磁盘分区、文件系统、磁盘的使用情况相关的命令和工具介绍
- CStatic控件SS_NOTIFY属性
- nyoj743-复杂度 【排列组合】
- HTTP 请求过程