zoukankan      html  css  js  c++  java
  • 【Mybatis】mybatis使用示例

    BusinessAnalysisMapper.java

    import com.chinamobile.epic.dao.model.PerformanceMetricAnalysis;
    import com.chinamobile.epic.dao.model.PerformanceMetricAnalysisModel;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    
    import java.util.Date;
    import java.util.List;
    
    
    @Mapper
    public interface BusinessAnalysisMapper {
        // 参考: BusinessStatisticMapper
        int deleteByPrimaryKey(PerformanceMetricAnalysisModel key);
    
        int insert(PerformanceMetricAnalysisModel record);
    
        /**
         * 批量插入数据(根据“表名后缀”插入)
         *
         * @param record
         * @param tableNameSuffix 表名后缀
         * @return
         */
        int insertBatch(@Param("list") List<PerformanceMetricAnalysisModel> record, @Param("tableNameSuffix") String tableNameSuffix);
    
        int insertSelective(PerformanceMetricAnalysisModel record);
    
        PerformanceMetricAnalysis selectByPrimaryKey(PerformanceMetricAnalysisModel key);
    
        int updateByPrimaryKeySelective(PerformanceMetricAnalysisModel record);
    
        int updateByPrimaryKey(PerformanceMetricAnalysisModel record);
    
        /**
         * 删除 startTime 之前的数据
         *
         * @param startTime
         * @param tableNameSuffix
         * @return
         */
        int deleteBeforeTime(@Param("createAt") Date startTime, @Param("tableNameSuffix") String tableNameSuffix);
    
        /**
         * 聚合查询
         *
         * @param tableName
         * @param funcToUse 对value求值时,使用的函数,如:avg,sum
         * @param startTime 查询的开始时间
         * @param endTime   查询的结束时间
         * @return
         */
        List<PerformanceMetricAnalysis> groupByDimensionIDAndIndicatorID(@Param("srcTableName") String tableName, @Param("func") String
                funcToUse, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
    
        /**
         * 聚合查询:指标项为 {@code MetricDataType.Counter} 类型
         *
         * @param tableName
         * @param startTime
         * @param endTime
         * @param indicatorKeysOfCounter
         * @return
         */
        List<PerformanceMetricAnalysis> groupCounterDataByDimensionIndicator(@Param("srcTableName") String tableName, @Param("startTime")
                Date startTime, @Param("endTime") Date endTime, @Param("list") List<String> indicatorKeysOfCounter);
    
        /**
         * 聚合查询:指标项为 {@code MetricDataType.Gauge} 类型
         *
         * @param tableName
         * @param startTime
         * @param endTime
         * @param indicatorKeysOfGauge
         * @return
         */
        List<PerformanceMetricAnalysis> groupGaugeDataByDimensionIndicator(@Param("srcTableName") String tableName, @Param("startTime")
                Date startTime, @Param("endTime") Date endTime, @Param("list") List<String> indicatorKeysOfGauge);
    }
    
    
    

    BusinessAnalysisMapper.xml

    <?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.chinamobile.epic.dao.mapper.BusinessAnalysisMapper">
    
        <resultMap id="BaseResultMap" type="com.chinamobile.epic.dao.model.PerformanceMetricAnalysis">
            <id column="dimension_id" property="dimensionId" jdbcType="CHAR"/>
            <id column="indicator_key" property="indicatorKey" jdbcType="VARCHAR"/>
            <id column="create_at" property="createAt" jdbcType="TIMESTAMP"/>
            <result column="pool_id" property="poolId" jdbcType="CHAR"/>
            <result column="value" property="value" jdbcType="DOUBLE"/>
            <result column="resource_type" property="resourceType" jdbcType="VARCHAR"/>
        </resultMap>
    
        <sql id="Base_Column_List">
            pool_id, dimension_id, indicator_key, value, resource_type, create_at
        </sql>
    
        <sql id="Base_Column_List_sumValue">
            pool_id, dimension_id, indicator_key, sum(value) as value, resource_type, create_at
        </sql>
    
        <sql id="Base_Column_List_avgValue">
            pool_id, dimension_id, indicator_key, avg(value) as value, resource_type, create_at
        </sql>
    
        <sql id="Base_Column_List_maxValue">
            pool_id, dimension_id, indicator_key,  max(value) as value, resource_type, create_at
        </sql>
    
        <sql id="Aggregation_Group_By">
            dimension_id, indicator_key
        </sql>
    
        <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="com.chinamobile.epic.dao.model.PerformanceMetricAnalysisModel">
            select
            <include refid="Base_Column_List"/>
            from performance_metirc_business_${tableNameSuffix}
            where dimension_id = #{dimensionId,jdbcType=CHAR}
            and indicator_key = #{indicatorKey,jdbcType=VARCHAR}
            and create_at = #{createAt,jdbcType=TIMESTAMP}
        </select>
    
        <select id="groupByDimensionIDAndIndicatorID" resultMap="BaseResultMap">
            select
            <if test='func=="avg"'>
                <include refid="Base_Column_List_avgValue"/>
            </if>
            <if test='func=="sum"'>
                <include refid="Base_Column_List_sumValue"/>
            </if>
            from ${srcTableName}
            where create_at &gt;= #{startTime,jdbcType=TIMESTAMP}
            and create_at &lt;= #{endTime,jdbcType=TIMESTAMP}
            GROUP BY
            <include refid="Aggregation_Group_By"/>
        </select>
    
        <!-- 这种方式可能不准确,应该使用求last的方式: 见下面-->
        <!--<select id="groupCounterDataByDimensionIndicator" resultMap="BaseResultMap">-->
        <!--select-->
        <!--<include refid="Base_Column_List_maxValue"/>-->
        <!--from ${srcTableName}-->
        <!--where create_at &gt;= #{startTime,jdbcType=TIMESTAMP}-->
        <!--and create_at &lt;= #{endTime,jdbcType=TIMESTAMP}-->
        <!--<choose>-->
        <!--<when test="list != null and list.size()>0">-->
        <!--and indicator_key in-->
        <!--<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">-->
        <!--#{item,jdbcType=CHAR}-->
        <!--</foreach>-->
        <!--</when>-->
        <!--<otherwise>-->
        <!--and indicator_key in('Unknown')-->
        <!--</otherwise>-->
        <!--</choose>-->
        <!--GROUP BY-->
        <!--<include refid="Aggregation_Group_By"/>-->
        <!--</select>-->
    
        <select id="groupCounterDataByDimensionIndicator" resultMap="BaseResultMap">
            select
            <include refid="Base_Column_List"/>
            from
            (
            SELECT * FROM ${srcTableName}
            WHERE create_at &gt;= #{startTime,jdbcType=TIMESTAMP}
            and create_at &lt;= #{endTime,jdbcType=TIMESTAMP}
            <choose>
                <when test="list != null and list.size()>0">
                    and indicator_key in
                    <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
                        #{item,jdbcType=CHAR}
                    </foreach>
                </when>
                <otherwise>
                    and indicator_key in('Unknown')
                </otherwise>
            </choose>
            ORDER BY create_at DESC
            ) AS t
            GROUP BY
            <include refid="Aggregation_Group_By"/>
        </select>
    
        <select id="groupGaugeDataByDimensionIndicator" resultMap="BaseResultMap">
            select
            <include refid="Base_Column_List_avgValue"/>
            from ${srcTableName}
            where create_at &gt;= #{startTime,jdbcType=TIMESTAMP}
            and create_at &lt;= #{endTime,jdbcType=TIMESTAMP}
            <choose>
                <when test="list != null and list.size()>0">
                    and indicator_key in
                    <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
                        #{item,jdbcType=CHAR}
                    </foreach>
                </when>
                <otherwise>
                    and indicator_key in('Unknown')
                </otherwise>
            </choose>
            GROUP BY
            <include refid="Aggregation_Group_By"/>
        </select>
    
        <delete id="deleteByPrimaryKey" parameterType="com.chinamobile.epic.dao.model.PerformanceMetricAnalysisModel">
          delete from performance_metirc_business_${tableNameSuffix}
          where dimension_id = #{dimensionId,jdbcType=CHAR}
              and indicator_key = #{indicatorKey,jdbcType=VARCHAR}
              and create_at = #{createAt,jdbcType=TIMESTAMP}
      </delete>
    
        <delete id="deleteBeforeTime">
            delete from performance_metirc_business_${tableNameSuffix}
            where create_at &lt;= #{createAt,jdbcType=TIMESTAMP}
        </delete>
    
        <insert id="insert" parameterType="com.chinamobile.epic.dao.model.PerformanceMetricAnalysisModel">
           insert into performance_metirc_business_${tableNameSuffix} (dimension_id, indicator_key, create_at, pool_id, value, resource_type )
          values (#{dimensionId,jdbcType=CHAR}, #{indicatorKey,jdbcType=VARCHAR}, #{createAt,jdbcType=TIMESTAMP},
          #{poolId,jdbcType=CHAR}, #{value,jdbcType=DOUBLE}, #{resourceType,jdbcType=VARCHAR}
          )
      </insert>
    
        <insert id="insertBatch">
            insert into performance_metirc_business_${tableNameSuffix} (dimension_id, indicator_key, create_at, pool_id, value, resource_type )
            values
            <foreach collection="list" item="item" index="index" separator=",">
                (#{item.dimensionId,jdbcType=CHAR}, #{item.indicatorKey,jdbcType=VARCHAR}, #{item.createAt,jdbcType=TIMESTAMP},
                #{item.poolId,jdbcType=CHAR}, #{item.value,jdbcType=DOUBLE}, #{item.resourceType,jdbcType=VARCHAR} )
            </foreach>
        </insert>
    
        <insert id="insertSelective" parameterType="com.chinamobile.epic.dao.model.PerformanceMetricAnalysisModel">
            insert into performance_metirc_business_${tableNameSuffix}
            <trim prefix="(" suffix=")" suffixOverrides=",">
                <if test="poolId != null">
                    pool_id,
                </if>
                <if test="dimensionId != null">
                    dimension_id,
                </if>
                <if test="indicatorKey != null">
                    indicator_key,
                </if>
                <if test="value != null">
                    value,
                </if>
                <if test="resourceType != null">
                    resource_type,
                </if>
                <if test="createAt != null">
                    create_at,
                </if>
            </trim>
            <trim prefix="values (" suffix=")" suffixOverrides=",">
                <if test="poolId != null">
                    #{poolId,jdbcType=CHAR},
                </if>
                <if test="dimensionId != null">
                    #{dimensionId,jdbcType=CHAR},
                </if>
                <if test="indicatorKey != null">
                    #{indicatorKey,jdbcType=VARCHAR},
                </if>
                <if test="value != null">
                    #{value,jdbcType=DOUBLE},
                </if>
                <if test="resourceType != null">
                    #{resourceType,jdbcType=VARCHAR},
                </if>
                <if test="createAt != null">
                    #{createAt,jdbcType=TIMESTAMP},
                </if>
            </trim>
        </insert>
    
        <update id="updateByPrimaryKeySelective" parameterType="com.chinamobile.epic.dao.model.PerformanceMetricAnalysisModel">
            update performance_metirc_business_${tableNameSuffix}
            <set>
                <if test="poolId != null">
                    pool_id = #{poolId,jdbcType=CHAR},
                </if>
                <if test="value != null">
                    value = #{value,jdbcType=DOUBLE},
                </if>
                <if test="resourceType != null">
                    resource_type = #{resourceType,jdbcType=VARCHAR},
                </if>
            </set>
            where dimension_id = #{dimensionId,jdbcType=CHAR}
            and indicator_key = #{indicatorKey,jdbcType=VARCHAR}
            and create_at = #{createAt,jdbcType=TIMESTAMP}
        </update>
    
        <update id="updateByPrimaryKey" parameterType="com.chinamobile.epic.dao.model.PerformanceMetricAnalysisModel">
        update performance_metirc_business_${tableNameSuffix}
        set pool_id = #{poolId,jdbcType=CHAR},
          value = #{value,jdbcType=DOUBLE},
          resource_type = #{resourceType,jdbcType=VARCHAR}
        where dimension_id = #{dimensionId,jdbcType=CHAR}
          and indicator_key = #{indicatorKey,jdbcType=VARCHAR}
          and create_at = #{createAt,jdbcType=TIMESTAMP}
      </update>
    
    
    </mapper>
    
  • 相关阅读:
    DNS 截持模拟及环境搭建
    Ant、Gradle、Python三种打包方式的介绍
    oc/c/c++混编老文,写的很好,mark
    好文!关于iOS下的正则表达式实战案例
    Java设计模式——享元模式
    Java 消息机制之回调详解
    windows版爬取csdn
    14.6.2 Configuring InnoDB for Read-Only Operation
    dump iot表
    heap表按字符串和数值型排序规则
  • 原文地址:https://www.cnblogs.com/ssslinppp/p/7278232.html
Copyright © 2011-2022 走看看