<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="com.house365.beans.entity.CustomerCallbackTemplateEntity">

    <typeAlias alias="customerCallbackTemplateEntity"
               type="com.house365.beans.entity.CustomerCallbackTemplateEntity"/>

    <resultMap id="customerCallbackTemplate"
               class="com.house365.beans.entity.CustomerCallbackTemplateEntity">
        <result property="id" column="id"/>
        <result property="cityKey" column="city_key"/>
        <result property="content" column="content"/>
    </resultMap>

    <!-- 用于select查询公用抽取的列 -->
    <sql id="customerCallbackTemplate.columns">
        <![CDATA[
        id, city_key, content
	    ]]>
    </sql>

    <!-- 新增记录 -->
    <insert id="save" parameterClass="customerCallbackTemplateEntity">
        <![CDATA[
	        INSERT INTO customer_callback_template (
	        	id, 
	        	city_key,
	        	content
	        ) VALUES (
	        	#id#, 
	        	#cityKey#,
	        	#content#
	        )
	    ]]>
        <selectKey resultClass="java.lang.Integer" type="post"
                   keyProperty="id">
            SELECT LAST_INSERT_ID()
        </selectKey>
    </insert>

    <!-- 通过ID修改 -->
    <update id="update" parameterClass="customerCallbackTemplateEntity">
        <![CDATA[
	        UPDATE customer_callback_template SET
		        content = #content#
	        WHERE 
		        id = #id#
	    ]]>
    </update>

    <!-- 通过ID删除 -->
    <delete id="delete">
        <![CDATA[
	        DELETE FROM customer_callback_template WHERE
	        id = #id#
	    ]]>
    </delete>

    <!-- 通过ID列表批量删除 -->
    <delete id="deleteByIds" parameterClass="java.lang.String">
        <![CDATA[
	        DELETE FROM customer_callback_template WHERE
	        id IN ($ids$)
	    ]]>
    </delete>

    <!-- 通过ID查询 -->
    <select id="getById" resultMap="customerCallbackTemplate">
        SELECT
        <include refid="customerCallbackTemplate.columns"/>
        <![CDATA[
	        FROM customer_callback_template
	        WHERE 
		        id = #id#
	    ]]>
    </select>

    <!-- 用于分页查询抽取的公共的条件 -->
    <sql id="customerCallbackTemplate.queryPage">
        <dynamic prepend="WHERE">
            <!-- 默认不开启实体作为条件 -->
            <isNotNull property="searchFilters">
                <isNotEmpty prepend="AND" property="searchFilters.id">
                    <![CDATA[
					id $searchFilters.id.operation$ #searchFilters.id.value#
		            ]]>
                </isNotEmpty>
                <isNotEmpty prepend="AND" property="searchFilters.cityKey">
                    <![CDATA[
					city_key $searchFilters.cityKey.operation$ #searchFilters.cityKey.value#
		            ]]>
                </isNotEmpty>
                <isNotEmpty prepend="AND" property="searchFilters.content">
                    <![CDATA[
					content $searchFilters.content.operation$ #searchFilters.content.value#
		            ]]>
                </isNotEmpty>
            </isNotNull>
        </dynamic>
        <dynamic prepend="ORDER BY">
            <isNotNull property="orderColumn">
                <![CDATA[
				$orderColumn$
				]]>
                <isNotNull property="orderMode">
                    $orderMode$
                </isNotNull>
            </isNotNull>
        </dynamic>
    </sql>

    <!-- 为分页查询符合条件的记录数 -->
    <select id="queryByPage_count" resultClass="int">
        SELECT count(*) FROM customer_callback_template
        <include refid="customerCallbackTemplate.queryPage"/>
    </select>

    <!-- 分页查询指定页记录 -->
    <select id="queryByPage" resultMap="customerCallbackTemplate">
        SELECT
        <include refid="customerCallbackTemplate.columns"/>
        <![CDATA[
	        FROM customer_callback_template
	    ]]>
        <include refid="customerCallbackTemplate.queryPage"/>
        <![CDATA[
		    LIMIT #paging.startRecord#, #paging.pageSize#
        ]]>
    </select>

    <!-- 查询所有记录 -->
    <select id="queryAll" resultMap="customerCallbackTemplate">
        SELECT
        <include refid="customerCallbackTemplate.columns"/>
        <![CDATA[
		    FROM customer_callback_template
	    ]]>
        <include refid="customerCallbackTemplate.queryPage"/>
    </select>
</sqlMap>
