【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 >= #{startTime,jdbcType=TIMESTAMP}
and create_at <= #{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 >= #{startTime,jdbcType=TIMESTAMP}-->
<!--and create_at <= #{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 >= #{startTime,jdbcType=TIMESTAMP}
and create_at <= #{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 >= #{startTime,jdbcType=TIMESTAMP}
and create_at <= #{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 <= #{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>
【Mybatis】mybatis使用示例的更多相关文章
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...
- 单独使用MyBatis的简单示例
单独使用MyBatis的简单示例:mybaties-config.xml:MyBatis配置文件 <?xml version="1.0" encoding="UTF ...
- (转)MyBatis & MyBatis Plus
(二期)3.mybatis与mybatis plus [课程三]mybatis ...运用.xmind0.1MB [课程三]mybatis...机制.xmind0.2MB [课程三]mybatis与j ...
- MyBatis -01- 初识 MyBatis + MyBatis 环境搭建
MyBatis -01- 初识 MyBatis + MyBatis 环境搭建 MyBatis 本是 apache 的一个开源项目 iBatis(iBATIS = "internet" ...
- 项目脚手架 - 《Spring Boot + MyBatis + MyBatis Generator》
前言 最近启动了一个新的项目发现,每当一个新项目的启动往往需要从头搭建一个"框架",其中虽然很多基础代码可以Copy,但也会浪费不少时间. 基于这个情况,我打算在GitHub上创建 ...
- mybatis 简单使用示例(单独使用):
mybatis的单独使用简单示例: 步骤1: 新建xml文件. 示例: <?xml version="1.0" encoding="UTF-8" ?> ...
- MyBatis的association示例——MyBatis学习笔记之三
前两篇博文介绍的都是单表映射,而实际上很多时候我们需要用到较复杂的映射.今天学会的association的用法,就是一例,现写出来和大家分享(为简洁起见,ant工程中各文件.目录的布局,以及其它与前面 ...
- Mybatis的简单示例
首先新建一个JavaWeb项目并导入mybatis依赖的jar包,同时Mybatis是对数据库的操作所以我们需要在数据库中新建一个表user用来演示. 新建完表之后我们还需要建立相对应的实体类User ...
- MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间
Plugins 摘一段来自MyBatis官方文档的文字. MyBatis允许你在某一点拦截已映射语句执行的调用.默认情况下,MyBatis允许使用插件来拦截方法调用 Executor(update.q ...
- MyBatis Generator配置示例
(一).MBG介绍 MyBatis Generator(MBG)是一个Mybatis的代码生成器,它可以用来生成可以访问(多个)表的基础对象.MBG解决了对数据库操作有最大影响的一些简单的CRUD(插 ...
随机推荐
- mac上不了网
不知怎么回事勾选了socks代理导致ping的通但打不开网页软件登不了
- [LeetCode&Python] Problem 563. Binary Tree Tilt
Given a binary tree, return the tilt of the whole tree. The tilt of a tree node is defined as the ab ...
- Cocos2dx 中的点击事件
简单记录一下2dx的鼠标交互事件.以及精灵绑定盒的点击判定 Layer 子类的 init方法中: auto listener = EventListenerTouchOneByOne::cre ...
- Gym.101908 Brazil Subregional Programming Contest(寒假自训第六场)
这几天睡眠时间都不太够,室友晚上太会折腾了,感觉有点累,所以昨天的题解也没写,看晚上能不能补起来. B . Marbles 题意:给定N组数(xi,yi),玩家轮流操作,每次玩家可以选择其中一组对其操 ...
- vue拓展题
本文档基于vue-cli技术栈总结了 vue-cli工程 vue.js核心知识 vue-router路由 vuex状态管理器 axios等http请求 移动端适配 Tab切换等常用功能 vue与原生a ...
- css有缝隙
- XXS level2
(1)用level1的方法尝试,发现行不通 (2)查看PHP源代码 <?php ini_set("display_errors", 0); $str = $_GET[&quo ...
- Web四则混合运算
一.代码1: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...
- mvc core2.1 Identity.EntityFramework Core 登录 (三)
Controllers->AccountController.cs 新建 [HttpGet] [AllowAnonymous] public async Task<IActionResul ...
- #505 1&2 A-C 后面未完成
A. Doggo Recoloring 题目意思是给一个字符串(都是小写字母),如果有两个字符相同,我们可以将这两个字符变成其他字符,问能不能使字符串字母都一样 思路 有两个相同字符时就能: 字符 ...