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

结论: 通过设置别名的方式让其产生区别

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

时间: 2024-07-29 16:51:27

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

【工作杂记】一次修改表字段名操作导致的报表缺失了2个小时的数据

因为MSTR中设计实体的时候,字段名不一样的话两个表无法关联(很死板),故修改了表TBL_FACT_SKILL_RG96868_HOUR中的被叫字段名called_no->calleeno,大概9点20左右的时候做的修改列名操作. 由于疏忽,忘记修改了前一日新增的存储过程中的PRC_SKILL_RG_96868_HOUR的insert操作列名还未修改,导致存储过程编译失败,由于该过程又被更高一级每半小时执行一次的过程sp_icd_h_job调用了,进一步导致此过程也编译失败,但是当时并没有做验证

mybatis两张表关联关系映射

一对多 方法一 <resultMap type="Teacher" id="teacherMap"> <id column="id" property="id"/> <result column="name" property="name"/> <collection property="students" ofType=&q

Mybatis一对多,多对一中主子表字段名一致产生的问题及解决方案

数据库两张表的字段名都和两个类的属性名称一样,这时在关联查询出现一个问题. 学生类: package com.pojo; public class Student { private int id; private String name; private int age; private ClassInfo classInfo; public Student() { } public Student(String name, int age) { super(); this.name = na

mybatis使用中类属性名和数据库表字段名问题

起初我以为上述二者必须一致,后来发现也是可以像Hibernate那样在xml文件中进行映射的. <mapper namespace="com.tenghu.mybatis.model.xml.DepartmentMapper"> <!-- 配置映射字段 --> <resultMap type="Department" id="tab_department"> <id property="ids&

yii权限rbac验证三张表字段说明

auth_items:功能 用来记录RBAC中的对象. 字段: name - 存放对象名称,字符串: type - 对象类型,(0, 1, 2): description - 相关的描述,长字符串: bizrule -长字符串,可以在这里定义一个PHP的代码块,以增强验证的扩展性: data -长字符串,序列化后的数组.用于给bizrule提供参数: 其中 type 字段的值含义为 0 - Operation 操作1 - Task 任务2 - Role 角色 auth_assignments :

sql获取表字段名、描述和类型

SELECT TableName = OBJECT_NAME(c.object_id), ColumnsName = c.name, Description = ex.value, ColumnType=st.name, Length=c.max_length FROM sys.columns c LEFT JOIN sys.extended_properties ex ON ex.major_id = c.object_id AND ex.minor_id = c.column_id AND

如何对比两个表字段差异

做这个项目,以前只在业务表增加字段,而没在其历史表增加对应字段 最近客户需要将业务表和历史表的字段保持一致.于是用这个语句来进行对比即可,如果查出来有数据,则表示有字段差异 --2个表比较DECLARE @SourceTableName        VARCHAR(100)DECLARE @DestTableName          VARCHAR(100) SET @SourceTableName = '表名1'SET @DestTableName = '表名2' SELECT A.TAB

mysql中修改表字段名/字段长度/字段类型详解

先来看看常用的方法 MySql的简单语法,常用,却不容易记住.当然,这些Sql语法在各数据库中基本通用.下面列出: 1.增加一个字段 alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空alter table user add COLUMN new2 VARCHAR(20) NOT NULL; //增加一个字段,默认不能为空 2.删除一个字段 alter table user DROP COLUMN ne

oracle修改表字段名时报错:ORA-00054:资源正忙,但指定以NOWAIT方式获取资源,或者超时失效的问题

打开sql plus select session_id from v$locked_object;查询出oracle锁定的会话ID SELECT sid, serial#, username, osuser FROM v$session where sid = 1; 查询出当前会话数的信息 ALTER SYSTEM KILL SESSION '200,2141'; 杀掉当前会话 注:'200,2141'是:SID和SERIAL字段进行拼接的