项目中查询需要,返回结果一对多关系
在对应的mapper的xml文件中设置一下resultMap
<resultMap id="crossSignalPlanInfoMap" type="com.ehl.traffic.scene.management.model.vo.CrossSignalPlanVo">
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="PLAN_ID" jdbcType="VARCHAR" property="planId" />
<result column="CYCLE" jdbcType="INTEGER" property="cycle" />
<result column="OFFSET" jdbcType="INTEGER" property="offset" />
<result column="TIMING" jdbcType="VARCHAR" property="timing" />
<result column="CROSS_ID" jdbcType="VARCHAR" property="crossId" />
<result column="PLAN_TYPE" jdbcType="VARCHAR" property="planType" />
<collection ofType="com.ehl.traffic.scene.management.model.vo.CrossSignalInfoVo" property="crossSignalInfoList">
<result column="DIRECTION" jdbcType="INTEGER" property="direction" />
<result column="GREEN" jdbcType="INTEGER" property="green" />
<result column="YELLOW" jdbcType="INTEGER" property="yellow" />
<result column="RED" jdbcType="INTEGER" property="red" />
<result column="PHASE_ORDER" jdbcType="INTEGER" property="phaseOrder" />
<result column="SIGNAL_TYPE" jdbcType="VARCHAR" property="signalType" />
<result column="GREEN_NEW" jdbcType="INTEGER" property="greenNew" />
<result column="YELLOW_NEW" jdbcType="INTEGER" property="yellowNew" />
<result column="RED_NEW" jdbcType="INTEGER" property="redNew" />
</collection>
</resultMap>
sql中这样写即可
<select id="getSignalInfo" parameterType="com.ehl.traffic.scene.management.model.po.CrossSignalPlan" resultMap="crossSignalPlanInfoMap">
SELECT
csi.DIRECTION,
csi.GREEN,
csi.YELLOW,
csi.RED,
csi.PHASE_ORDER,
csi.SIGNAL_TYPE,
csi.GREEN_NEW,
csi.YELLOW_NEW,
csi.RED_NEW,
csp.ID,
csp.PLAN_ID,
csp.CYCLE,
csp.OFFSET,
csp.TIMING,
csp.CROSS_ID,
csp.PLAN_TYPE
FROM
CROSS_SIGNAL_INFO csi,CROSS_SIGNAL_PLAN csp
WHERE
csi.PLAN_ID = csp.PLAN_ID
AND csi.PLAN_ID In ( SELECT PLAN_ID FROM CROSS_SIGNAL_PLAN WHERE
1=1