引子:现在又如下两张表需要做
left join
表关联,关联字段为line_code
CREATE TABLE `c_checkline` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(20) NOT NULL COMMENT '名称',
`code` varchar(20) NOT NULL COMMENT '检线编码',
`created_by` int(11) DEFAULT NULL COMMENT '创建人',
`updated_by` int(11) DEFAULT NULL COMMENT '更新人',
`created_on` timestamp NOT NULL COMMENT '创建日期',
`updated_on` timestamp NOT NULL COMMENT '更新日期',
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='基础表检线表'
CREATE TABLE `c_hosp_checkline` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(20) NOT NULL COMMENT '名称',
`line_code` varchar(20) NOT NULL COMMENT '检线编码',
`status` int(11) DEFAULT NULL COMMENT '可用状态:0启用,1禁用',
`created_by` int(11) DEFAULT NULL COMMENT '创建人',
`updated_by` int(11) DEFAULT NULL COMMENT '更新人',
`created_on` timestamp NOT NULL COMMENT '创建日期',
`updated_on` timestamp NOT NULL COMMENT '更新日期',
`hosp_id` int(11) NOT NULL COMMENT '分院id',
`mis_hosp_code` varchar(10) DEFAULT NULL COMMENT '检线对应mis分院编码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='分院检线表'
SQL 语句为:
SELECT hcl.id ,hcl.name ,cl.name from c_hosp_checkline hcl left JOIN c_checkline cl on hcl.line_code = cl.`code`
创建两个表的bean(这里我就不贴代码了),因为是两遍关联查询,所以需要在表c_hosp_checkline
的bean中,加入c_checkline
表的bean实体。
mybatis代码如下:
@Select("SELECT hcl.id ,hcl.name ,hcl.status ,cl.id,cl.name as clName from c_hosp_checkline hcl " +
"left JOIN c_checkline cl on hcl.line_code = cl.`code` " +
"where hosp_id = #{hospId}")
@Results({
@Result(column="clName", property="checkline.name", jdbcType=JdbcType.VARCHAR),
})
List<HospCheckline> selectByHospId(Integer hospId);
注意这行代码:property="checkline.name"
,因为两个表中有同名字段,而且是表关联,所以在实体解析的时候,需要这这样操作。
转载请注明:R&M » mybatis注解形式多表关联字段映射时注意的小点