iot-gateway/src/main/resources/mappers/iot/ServeMapper.xml

75 lines
3.6 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zsc.edu.gateway.modules.iot.tsl.repo.ServeRepository">
<resultMap id="paramMap" type="com.zsc.edu.gateway.modules.iot.tsl.entity.Param">
<id column="param_id" property="id"/>
<result column="param_data_type" property="dataType"/>
<result column="param_uint" property="uint"/>
<result column="param_type" property="type"/>
<result column="param_identifier" property="identifier"/>
<result column="param_name" property="name"/>
<result column="param_remark" property="remark"/>
</resultMap>
<resultMap id="ServeMap" type="com.zsc.edu.gateway.modules.iot.tsl.entity.Serve">
<id column="id" property="id"/>
<result column="product_id" property="productId"/>
<result column="identifier" property="identifier"/>
<result column="name" property="name"/>
<result column="remark" property="remark"/>
<collection property="inputs" resultMap="paramMap" autoMapping="true" columnPrefix="input_">
</collection>
<collection property="outputs" resultMap="paramMap" autoMapping="true" columnPrefix="output_">
</collection>
</resultMap>
<select id="selectById" resultMap="ServeMap">
SELECT s.id,
s.product_id,
s.identifier,
s.name,
s.remark,
input_params.id as input_param_id,
input_params.data_type as input_param_data_type,
input_params.uint as input_param_uint,
input_params.type as input_param_type,
input_params.identifier as input_param_identifier,
input_params.name as input_param_name,
input_params.remark as input_param_remark,
output_params.id as output_param_id,
output_params.data_type as output_param_data_type,
output_params.uint as output_param_uint,
output_params.type as output_param_type,
output_params.identifier as output_param_identifier,
output_params.name as output_param_name,
output_params.remark as output_param_remark
FROM iot_serve s
LEFT JOIN (SELECT sp.serve_id,
ip.id,
ip.data_type,
ip.uint,
ip.type,
ip.identifier,
ip.name,
ip.remark
FROM iot_serve_param sp
JOIN iot_param ip ON sp.param_id = ip.id
WHERE ip.type = 1) input_params ON s.id = input_params.serve_id
LEFT JOIN (SELECT sp.serve_id,
ip.id,
ip.data_type,
ip.uint,
ip.type,
ip.identifier,
ip.name,
ip.remark
FROM iot_serve_param sp
JOIN iot_param ip ON sp.param_id = ip.id
WHERE ip.type = 2) output_params ON s.id = output_params.serve_id
WHERE s.id = #{id}
</select>
</mapper>