<?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.tongran.system.mapper.RmSwitchManagementMapper">

    <resultMap type="RmSwitchManagement" id="RmSwitchManagementResult">
        <result property="id"    column="id"    />
        <result property="switchType"    column="switch_type"    />
        <result property="switchName"    column="switch_name"    />
        <result property="hardwareSn"    column="hardware_sn"    />
        <result property="snmpAddress"    column="snmp_address"    />
        <result property="snmpPort"    column="snmp_port"    />
        <result property="onlineStatus"    column="online_status"    />
        <result property="heartbeatCount"    column="heartbeat_count"    />
        <result property="heartbeatInterval"    column="heartbeat_interval"    />
        <result property="heartbeatOid"    column="heartbeat_oid"    />
        <result property="snmpVersion"    column="snmp_version"    />
        <result property="upTime"    column="up_time"    />
        <result property="readWritePermission"    column="read_write_permission"    />
        <result property="securityLevel"    column="security_level"    />
        <result property="encryptionMethod"    column="encryption_method"    />
        <result property="communityName"    column="community_name"    />
        <result property="switchUser"    column="switch_user"    />
        <result property="switchPassword"    column="switch_password"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateTime"    column="update_time"    />
        <result property="createBy"    column="create_by"    />
        <result property="updateBy"    column="update_by"    />
        <result property="clientId"    column="client_id"    />
    </resultMap>

    <sql id="selectRmSwitchManagementVo">
        select id, switch_type, switch_name, hardware_sn, snmp_address, snmp_port, online_status, heartbeat_count, heartbeat_interval, heartbeat_oid, snmp_version, up_time, read_write_permission, security_level, encryption_method, community_name, switch_user, switch_password, create_time, update_time, create_by, update_by, client_id from rm_switch_management
    </sql>

    <select id="selectRmSwitchManagementList" parameterType="RmSwitchManagement" resultMap="RmSwitchManagementResult">
        <include refid="selectRmSwitchManagementVo"/>
        <where>
            <if test="switchType != null  and switchType != ''"> and switch_type = #{switchType}</if>
            <if test="switchName != null  and switchName != ''"> and switch_name like concat('%', #{switchName}, '%')</if>
            <if test="hardwareSn != null  and hardwareSn != ''"> and hardware_sn = #{hardwareSn}</if>
            <if test="snmpAddress != null  and snmpAddress != ''"> and snmp_address = #{snmpAddress}</if>
            <if test="snmpPort != null "> and snmp_port = #{snmpPort}</if>
            <if test="onlineStatus != null  and onlineStatus != ''"> and online_status = #{onlineStatus}</if>
            <if test="heartbeatCount != null  and heartbeatCount != ''"> and heartbeat_count = #{heartbeatCount}</if>
            <if test="heartbeatInterval != null  and heartbeatInterval != ''"> and heartbeat_interval = #{heartbeatInterval}</if>
            <if test="heartbeatOid != null  and heartbeatOid != ''"> and heartbeat_oid = #{heartbeatOid}</if>
            <if test="snmpVersion != null  and snmpVersion != ''"> and snmp_version = #{snmpVersion}</if>
            <if test="upTime != null "> and up_time = #{upTime}</if>
            <if test="readWritePermission != null  and readWritePermission != ''"> and read_write_permission = #{readWritePermission}</if>
            <if test="securityLevel != null  and securityLevel != ''"> and security_level = #{securityLevel}</if>
            <if test="encryptionMethod != null  and encryptionMethod != ''"> and encryption_method = #{encryptionMethod}</if>
            <if test="communityName != null  and communityName != ''"> and community_name like concat('%', #{communityName}, '%')</if>
            <if test="switchUser != null  and switchUser != ''"> and switch_user = #{switchUser}</if>
            <if test="switchPassword != null  and switchPassword != ''"> and switch_password = #{switchPassword}</if>
            <if test="clientId != null  and clientId != ''"> and client_id = #{clientId}</if>
            <if test="queryName != null  and queryName != ''">
                and (snmp_address = #{queryName} or switch_name like concat('%', #{queryName}, '%'))
             </if>
        </where>
        order by create_time desc
    </select>

    <select id="selectRmSwitchManagementById" parameterType="Long" resultMap="RmSwitchManagementResult">
        <include refid="selectRmSwitchManagementVo"/>
        where id = #{id}
    </select>

    <insert id="insertRmSwitchManagement" parameterType="RmSwitchManagement" useGeneratedKeys="true" keyProperty="id">
        insert into rm_switch_management
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="switchType != null">switch_type,</if>
            <if test="switchName != null and switchName != ''">switch_name,</if>
            <if test="hardwareSn != null and hardwareSn != ''">hardware_sn,</if>
            <if test="snmpAddress != null and snmpAddress != ''">snmp_address,</if>
            <if test="snmpPort != null">snmp_port,</if>
            <if test="onlineStatus != null and onlineStatus != ''">online_status,</if>
            <if test="heartbeatCount != null and heartbeatCount != ''">heartbeat_count,</if>
            <if test="heartbeatInterval != null and heartbeatInterval != ''">heartbeat_interval,</if>
            <if test="heartbeatOid != null and heartbeatOid != ''">heartbeat_oid,</if>
            <if test="snmpVersion != null and snmpVersion != ''">snmp_version,</if>
            <if test="upTime != null">up_time,</if>
            <if test="readWritePermission != null">read_write_permission,</if>
            <if test="securityLevel != null">security_level,</if>
            <if test="encryptionMethod != null">encryption_method,</if>
            <if test="communityName != null">community_name,</if>
            <if test="switchUser != null">switch_user,</if>
            <if test="switchPassword != null">switch_password,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="createBy != null">create_by,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="clientId != null">client_id,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="switchType != null">#{switchType},</if>
            <if test="switchName != null and switchName != ''">#{switchName},</if>
            <if test="hardwareSn != null and hardwareSn != ''">#{hardwareSn},</if>
            <if test="snmpAddress != null and snmpAddress != ''">#{snmpAddress},</if>
            <if test="snmpPort != null">#{snmpPort},</if>
            <if test="onlineStatus != null and onlineStatus != ''">#{onlineStatus},</if>
            <if test="heartbeatCount != null and heartbeatCount != ''">#{heartbeatCount},</if>
            <if test="heartbeatInterval != null and heartbeatInterval != ''">#{heartbeatInterval},</if>
            <if test="heartbeatOid != null and heartbeatOid != ''">#{heartbeatOid},</if>
            <if test="snmpVersion != null and snmpVersion != ''">#{snmpVersion},</if>
            <if test="upTime != null">#{upTime},</if>
            <if test="readWritePermission != null">#{readWritePermission},</if>
            <if test="securityLevel != null">#{securityLevel},</if>
            <if test="encryptionMethod != null">#{encryptionMethod},</if>
            <if test="communityName != null">#{communityName},</if>
            <if test="switchUser != null">#{switchUser},</if>
            <if test="switchPassword != null">#{switchPassword},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="clientId != null">#{clientId},</if>
        </trim>
    </insert>

    <update id="updateRmSwitchManagement" parameterType="RmSwitchManagement">
        update rm_switch_management
        <trim prefix="SET" suffixOverrides=",">
            <if test="switchType != null">switch_type = #{switchType},</if>
            <if test="switchName != null and switchName != ''">switch_name = #{switchName},</if>
            <if test="hardwareSn != null and hardwareSn != ''">hardware_sn = #{hardwareSn},</if>
            <if test="snmpAddress != null and snmpAddress != ''">snmp_address = #{snmpAddress},</if>
            <if test="snmpPort != null">snmp_port = #{snmpPort},</if>
            <if test="onlineStatus != null and onlineStatus != ''">online_status = #{onlineStatus},</if>
            <if test="heartbeatCount != null and heartbeatCount != ''">heartbeat_count = #{heartbeatCount},</if>
            <if test="heartbeatInterval != null and heartbeatInterval != ''">heartbeat_interval = #{heartbeatInterval},</if>
            <if test="heartbeatOid != null and heartbeatOid != ''">heartbeat_oid = #{heartbeatOid},</if>
            <if test="snmpVersion != null and snmpVersion != ''">snmp_version = #{snmpVersion},</if>
            <if test="upTime != null">up_time = #{upTime},</if>
            <if test="readWritePermission != null">read_write_permission = #{readWritePermission},</if>
            <if test="securityLevel != null">security_level = #{securityLevel},</if>
            <if test="encryptionMethod != null">encryption_method = #{encryptionMethod},</if>
            <if test="communityName != null">community_name = #{communityName},</if>
            <if test="switchUser != null">switch_user = #{switchUser},</if>
            <if test="switchPassword != null">switch_password = #{switchPassword},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
        </trim>
        <where>
            <choose>
                <when test="id != null">
                    and id = #{id}
                </when>
                <when test="clientId != null and clientId != ''">
                    and client_id = #{clientId}
                </when>
                <otherwise>
                    and 1=0
                </otherwise>
            </choose>
        </where>
    </update>

    <delete id="deleteRmSwitchManagementById" parameterType="Long">
        delete from rm_switch_management where id = #{id}
    </delete>

    <delete id="deleteRmSwitchManagementByIds" parameterType="String">
        delete from rm_switch_management where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>