【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(插 ...
随机推荐
- HPU组队赛B:问题(二进制枚举)
时间限制1 Second 内存限制 512 Mb 题目描述 你有n个问题,你已经估计了第i个问题的难度为Ci,现在你想使用这些问题去构造一个问题集.比赛的问题集必须包含至少两个问题,而且比赛的总难度必 ...
- C语言--第二周作业评分和总结(5班)
作业链接:https://edu.cnblogs.com/campus/hljkj/CS2017-5/homework/1026 一.评分要求 要求1 阅读指定博客+阅读收获+例子.(5分) 要求2 ...
- CTEX(LaTeX) 编译 中文
CTEX 中文编码&编译问题 #win10 tex 文档为 GBK 编码 https://zhidao.baidu.com/question/93645685.html \documentcl ...
- 这样学习C语言最有效(高级技巧)——共勉
第一章 学习C语言的起跑线 1.1 C语言已死? 本资料描述的是使用C语言的高级技巧,力求将你的C语言能力由"基础"提升为"高级".但是学习态度胜过学习方法,在 ...
- scanf() gets() fgets()使用注意事项
1.scanf() 遇到'\n'停止从输入缓冲区中接收,接收完后‘\n’还存在于缓冲区中.当输入的字符数少于缓冲区大小时,字符后面有自动补上‘\0’,当输入字符大于缓冲区时,也直接拷贝到缓冲中,因此缓 ...
- centos配置apache的https服务
因为公司要开发微信小程序,由于小程序比较特殊,需要https服务,所以就研究了下apache的https服务了,大致过程如下: 1.向证书机构申请https证书,会得到证书和私钥 2.安装apache ...
- 【KiCad】 如何给元件给元件的管脚加上划线?
如何给元件给元件的管脚加上划线? 在一线元件需要注明一些引脚是低电位使能的. 比如这样. 每款 EDA 软件有不同的做法,有的是在前后使用 /,有的是给每个字母加上 /. KiCad 不一样,使用的是 ...
- 谈谈 数据中心SOA 架构
为什么要讨论 数据中心SOA 架构呢? 请参考我写的另外一篇文章 <论 微服务 和 Entity Framework 对数据的割裂> https://www.cnblogs.com ...
- Percona XtraDB Cluster高可用与状态快照传输(PXC 5.7 )
Percona XtraDB Cluster(下称PXC)高可用集群支持任意节点在运行期间的重启,升级或者意外宕机,即它解决了单点故障问题.那在这个意外宕机或者重启期间,该节点丢失的数据如何再次进行同 ...
- bzoj 2870 最长道路tree——边分治
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2870 关于边分治:https://www.cnblogs.com/Khada-Jhin/p/ ...