<?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.op.mes.mapper.BaseFileMapper">

	<resultMap type="BaseFile" id="BaseFileResult">
		<result property="fileId"	column="file_id"	/>
		<result property="fileName"	column="file_name"	/>
		<result property="fileAddress"	column="file_address"	/>
		<result property="sourceId"	column="source_id"	/>
		<result property="remark"	column="remark"	/>
		<result property="attr1"	column="attr1"	/>
		<result property="attr2"	column="attr2"	/>
		<result property="attr3"	column="attr3"	/>
		<result property="attr4"	column="attr4"	/>
		<result property="createBy"	column="create_by"	/>
		<result property="createTime"	column="create_time"	/>
		<result property="updateBy"	column="update_by"	/>
		<result property="updateTime"	column="update_time"	/>
	</resultMap>

	<sql id="selectBaseFileVo">
		select file_id, file_name, file_address, source_id, remark, attr1,
		       attr2, attr3, attr4, create_by, create_time, update_by,
		       update_time from base_file
	</sql>

	<select id="selectBaseFileList" parameterType="BaseFile" resultMap="BaseFileResult">
		<include refid="selectBaseFileVo"/>
		<where>
			<if test="fileName != null  and fileName != ''"> and file_name like concat('%', #{fileName}, '%')</if>
			<if test="fileAddress != null  and fileAddress != ''"> and file_address = #{fileAddress}</if>
			<if test="sourceId != null  and sourceId != ''"> and source_id = #{sourceId}</if>
			<if test="attr1 != null  and attr1 != ''"> and attr1 = #{attr1}</if>
			<if test="attr2 != null  and attr2 != ''"> and attr2 = #{attr2}</if>
			<if test="attr3 != null "> and attr3 = #{attr3}</if>
			<if test="attr4 != null "> and attr4 = #{attr4}</if>
		</where>
	</select>

	<select id="selectBaseFileByFileId" parameterType="String" resultMap="BaseFileResult">
		<include refid="selectBaseFileVo"/>
		where file_id = #{fileId}
	</select>
    <select id="getBaseFileBatch" resultMap="BaseFileResult">
		<include refid="selectBaseFileVo"/>
		where source_id = #{sourceId}
	</select>

    <insert id="insertBaseFile" parameterType="BaseFile">
		insert into base_file
		<trim prefix="(" suffix=")" suffixOverrides=",">
			<if test="fileId != null">file_id,</if>
			<if test="fileName != null">file_name,</if>
			<if test="fileAddress != null">file_address,</if>
			<if test="sourceId != null">source_id,</if>
			<if test="remark != null">remark,</if>
			<if test="attr1 != null">attr1,</if>
			<if test="attr2 != null">attr2,</if>
			<if test="attr3 != null">attr3,</if>
			<if test="attr4 != null">attr4,</if>
			<if test="createBy != null">create_by,</if>
			<if test="createTime != null">create_time,</if>
			<if test="updateBy != null">update_by,</if>
			<if test="updateTime != null">update_time,</if>
		 </trim>
		<trim prefix="values (" suffix=")" suffixOverrides=",">
			<if test="fileId != null">#{fileId},</if>
			<if test="fileName != null">#{fileName},</if>
			<if test="fileAddress != null">#{fileAddress},</if>
			<if test="sourceId != null">#{sourceId},</if>
			<if test="remark != null">#{remark},</if>
			<if test="attr1 != null">#{attr1},</if>
			<if test="attr2 != null">#{attr2},</if>
			<if test="attr3 != null">#{attr3},</if>
			<if test="attr4 != null">#{attr4},</if>
			<if test="createBy != null">#{createBy},</if>
			<if test="createTime != null">#{createTime},</if>
			<if test="updateBy != null">#{updateBy},</if>
			<if test="updateTime != null">#{updateTime},</if>
		 </trim>
	</insert>
	<insert id="insertBaseFileBatch">
		INSERT INTO base_file(file_id, file_name, file_address, source_id, remark, create_by, create_time)
		VALUES
		<foreach collection="baseFiles" index="" item="baseFile" separator=",">
			(
			 #{baseFile.fileId},
			 #{baseFile.fileName},
		     #{baseFile.fileAddress},
			 #{baseFile.sourceId},
			 #{baseFile.remark},
			 #{baseFile.createBy},
			 #{baseFile.createTime}
			)
		</foreach>
	</insert>

	<update id="updateBaseFile" parameterType="BaseFile">
		update base_file
		<trim prefix="SET" suffixOverrides=",">
			<if test="fileName != null">file_name = #{fileName},</if>
			<if test="fileAddress != null">file_address = #{fileAddress},</if>
			<if test="sourceId != null">source_id = #{sourceId},</if>
			<if test="remark != null">remark = #{remark},</if>
			<if test="attr1 != null">attr1 = #{attr1},</if>
			<if test="attr2 != null">attr2 = #{attr2},</if>
			<if test="attr3 != null">attr3 = #{attr3},</if>
			<if test="attr4 != null">attr4 = #{attr4},</if>
			<if test="createBy != null">create_by = #{createBy},</if>
			<if test="createTime != null">create_time = #{createTime},</if>
			<if test="updateBy != null">update_by = #{updateBy},</if>
			<if test="updateTime != null">update_time = #{updateTime},</if>
		</trim>
		where file_id = #{fileId}
	</update>

	<delete id="deleteBaseFileByFileId" parameterType="String">
		delete from base_file where file_id = #{fileId}
	</delete>

	<delete id="deleteBaseFileByFileIds" parameterType="String">
		delete from base_file where file_id in
		<foreach item="fileId" collection="array" open="(" separator="," close=")">
			#{fileId}
		</foreach>
	</delete>
	<delete id="deleteBaseFileBySourceId">
		delete from base_file where source_id = #{sourceId}
	</delete>
</mapper>
