代码示例:
java
List<Map<String, Object>> photovoltaicQueryBySectionId(@Param("tableNameByProductId") String tableNameByProductId,@Param("sectionId") String sectionId);
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.example.mapper.IntelligentAnalysisMapper">
<!-- 动态表名 + 动态参数查询,根据productId区分查询条件 -->
<select id="startIntelligentAnalysis" resultType="java.util.Map">
SELECT * FROM ${tableNameByProductName}
<where>
<!-- 通用条件:如果有公共参数可以在这里添加 -->
<if test="queryParamMap.commonParam != null and queryParamMap.commonParam != ''">
AND common_column = #{queryParamMap.commonParam}
</if>
<!-- 根据productId不同,处理不同的查询参数 -->
<choose>
<!-- productId为32的情况 -->
<when test="productId == '32'">
<if test="queryParamMap.projectName != null and queryParamMap.projectName != ''">
AND project_name = #{queryParamMap.projectName}
</if>
<if test="queryParamMap.inverterType != null and queryParamMap.inverterType != ''">
AND inverter_type = #{queryParamMap.inverterType}
</if>
<if test="queryParamMap.capacity != null">
AND capacity = #{queryParamMap.capacity}
</if>
</when>
<!-- productId为33的情况 -->
<when test="productId == '33'">
<if test="queryParamMap.equipmentNo != null and queryParamMap.equipmentNo != ''">
AND equipment_no = #{queryParamMap.equipmentNo}
</if>
<if test="queryParamMap.productionDate != null">
AND production_date = #{queryParamMap.productionDate}
</if>
</when>
<!-- 其他productId的默认情况 -->
<otherwise>
<if test="queryParamMap.deviceId != null and queryParamMap.deviceId != ''">
AND device_id = #{queryParamMap.deviceId}
</if>
<if test="queryParamMap.status != null">
AND status = #{queryParamMap.status}
</if>
</otherwise>
</choose>
<!-- 时间范围条件(通用) -->
<if test="queryParamMap.startTime != null">
AND create_time >= #{queryParamMap.startTime}
</if>
<if test="queryParamMap.endTime != null">
AND create_time <= #{queryParamMap.endTime}
</if>
</where>
<!-- 可以根据需要添加排序 -->
<if test="queryParamMap.orderBy != null and queryParamMap.orderBy != ''">
ORDER BY ${queryParamMap.orderBy}
</if>
</select>
</mapper>