SknFlowMapper.xml 5.5 KB
<?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.yoho.search.dal.SknFlowMapper">
    <resultMap id="BaseResultMap" type="com.yoho.search.dal.model.SknFlow">
        <id column="product_skn" property="productSkn" jdbcType="INTEGER"/>
        <result column="date_id" property="dateId" jdbcType="VARCHAR"/>
        <result column="flow_type" property="flowType" jdbcType="INTEGER"/>
        <result column="create_time" property="createTime" jdbcType="INTEGER"/>
    </resultMap>

    <resultMap id="MonitorResultMap" type="com.yoho.search.dal.model.BigdataMonitor">
        <result column="date_id" property="dateId" jdbcType="VARCHAR"/>
        <result column="flow_type" property="flowType" jdbcType="INTEGER"/>
        <result column="num" property="num" jdbcType="INTEGER"/>
    </resultMap>

        <resultMap id="DayCountResultMap" type="com.yoho.search.dal.model.SknFlowDayCount">
        <id column="product_skn" property="productSkn" jdbcType="INTEGER"/>
        <result column="date_id" property="dateId" jdbcType="VARCHAR"/>
        <result column="flow_type" property="flowType" jdbcType="INTEGER"/>
        <result column="day_count" property="dayCount" jdbcType="INTEGER"/>
        <result column="create_time" property="createTime" jdbcType="INTEGER"/>
    </resultMap>

    <sql id="Base_Column_List">
    product_skn, date_id, flow_type, create_time
    </sql>

    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
        select
        <include refid="Base_Column_List"/>
        from skn_flow
        where product_skn = #{productSkn,jdbcType=INTEGER}
        limit 1
    </select>

    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from skn_flow
    where product_skn = #{productSkn,jdbcType=INTEGER}
    </delete>

    <insert id="insert" parameterType="com.yoho.search.dal.model.SknFlow">
    insert into skn_flow (product_skn, date_id, flow_type, 
      create_time)
    values (#{productSkn,jdbcType=INTEGER}, #{dateId,jdbcType=VARCHAR}, #{flowType,jdbcType=INTEGER}, 
      #{createTime,jdbcType=INTEGER})
    </insert>

    <update id="updateByPrimaryKeySelective" parameterType="com.yoho.search.dal.model.SknFlow">
        update skn_flow
        <set>
            <if test="dateId != null">
                date_id = #{dateId,jdbcType=VARCHAR},
            </if>
            <if test="flowType != null">
                flow_type = #{flowType,jdbcType=INTEGER},
            </if>
            <if test="createTime != null">
                create_time = #{createTime,jdbcType=INTEGER},
            </if>
        </set>
        where product_skn = #{productSkn,jdbcType=INTEGER}
    </update>

    <select id="selectLatestDateId" resultType="java.lang.Integer">
        select max(date_id) from skn_flow
    </select>

    <select id="selectLatestDateBySkn" resultMap="BaseResultMap" timeout="20000">
        <![CDATA[
		select * from skn_flow s
		where
		date_id = #{dateId}
		and
		s.product_skn in
		]]>
        <foreach item="item" index="index" collection="sknList"
                 open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

    <select id="selectSknByDate" resultType="java.lang.Long" timeout="20000">
        SELECT product_skn FROM skn_flow where date_id = #{dateId,jdbcType=VARCHAR} limit #{pageSize}
    </select>

    <delete id="deleteBatch">
        <![CDATA[
        DELETE FROM skn_flow
        WHERE
        date_id = #{dateId,jdbcType=VARCHAR}
        AND
        ]]>
        product_skn in
        <foreach item="item" index="index" collection="sknList" open="(" separator="," close=")">
            #{item}
        </foreach>
    </delete>

    <select id="selectCountGroupByDateId" resultMap="MonitorResultMap">
    select date_id,flow_type,count(*) num from skn_flow group by date_id,flow_type order by date_id desc limit 4;
    </select>

    <select id="selectCountByDateId" resultType="java.lang.Integer" timeout="20000">
        select count(*) from skn_flow where date_id = #{dateId}
    </select>

    <select id="selectPageListsByDateId" resultMap="BaseResultMap" timeout="20000">
        select
        <include refid="Base_Column_List"/>
        from skn_flow
        where date_id = #{dateId}
        limit #{offset},#{pageSize}
    </select>

    <update id="updateBatch" parameterType="java.util.List">
        update skn_flow
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="flow_type =case" suffix="end,">
                <foreach collection="sknFlowList" item="item" index="index">
                    <if test="item.flowType != null">
                        when product_skn=#{item.productSkn} then #{item.flowType}
                    </if>
                </foreach>
            </trim>
        </trim>
        where
        date_id = #{dateId,jdbcType=VARCHAR}
        and
        product_skn in
        <foreach collection="sknFlowList" index="index" item="item" separator="," open="(" close=")">
            #{item.productSkn,jdbcType=BIGINT}
        </foreach>
    </update>

    <select id="selectCount" resultType="int">
        select count(0) from skn_flow
    </select>

    <select id="selectPageLists" resultMap="DayCountResultMap" timeout="20000">
        select s.product_skn, s.date_id, s.flow_type, s.create_time, l.day_count from skn_flow s left join skn_flow_log l on s.product_skn = l.product_skn and s.flow_type=l.flow_type limit #{start}, #{limit}
    </select>

</mapper>