mapper.xml sql动态表查询配置
代码示例:
List<Map<String, Object>> photovoltaicQueryBySectionId(@Param("tableNameByProductId") String tableNameByProductId,@Param("sectionId") String sectionId);
<?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>