场景:
查询媒体信息(城市,媒体名称,所在媒体点位区域(station)),先从总表中查到了其外键id,接着使用@One关联查询到所在区域
@Select("SELECT media_id,city,name,media_type,XX,XX from label_media_all_auto")
@Results({
@Result(column = "X_X", property = "XX", jdbcType = JdbcType.VARCHAR),
@Result(property = "station",column = "{media_id = media_id,media_type = media_type}",one = @One(select = "getStation")),
})
List<OrderDetailsVO> listLabelMediaAll();
/**
* 根据media_id查询该站点所在的城市的区域
* 不同的media_type则去不同的表使用media_id去查询
* @return
*/
@Select({"<script>",
"<if test='media_type.contains(\"交通枢纽媒体\")'>select district from media_traffic_info where id = #{media_id}</if>",
"<if test='media_type.contains(\"楼宇媒体\")'>select district from media_building_info where id = #{media_id}</if>",
"<if test='media_type.contains(\"核心商圈媒体\")'>select district from media_corebiz_info where id = #{media_id}</if>",
"<if test='media_type.contains(\"全国地标媒体\")'>select district from media_landmark_info where id = #{media_id}</if>",
"<if test='media_type.contains(\"全国百强县镇媒体\")'>select town from media_town_wall_info where id = #{media_id}</if>",
"</script>"})
String getStation(@Param("media_id") Integer media_id,@Param("media_type") String media_type);