mapper.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.kflh.boxApi.chooseSignalSource.dao.CloseOrderMapper">
<resultMap id="customResultMap" type="com.kflh.boxApi.chooseSignalSource.entity.CloseOrderList">
<id property="account" column="account"/>
<collection property="closeOrderList" ofType="com.kflh.boxApi.chooseSignalSource.entity.CloseOrder">
<result column="id" jdbcType="INTEGER" property="id"/>
<result column="closeorder" jdbcType="INTEGER" property="closeOrder"/>
<result column="account" jdbcType="INTEGER" property="account"/>
<result column="symbol" jdbcType="VARCHAR" property="symbol"/>
<result column="cmd" jdbcType="TINYINT" property="cmd"/>
<result column="Volume" jdbcType="DOUBLE" property="volume"/>
<result column="OpenTime" jdbcType="INTEGER" property="openTime"/>
<result column="OpenPrice" jdbcType="DECIMAL" property="openPrice"/>
<result column="SL" jdbcType="DECIMAL" property="sl"/>
<result column="TP" jdbcType="DECIMAL" property="tp"/>
<result column="Magic" jdbcType="INTEGER" property="magic"/>
<result column="Comment" jdbcType="VARCHAR" property="comment"/>
<result column="timestamp" jdbcType="INTEGER" property="timestamp"/>
<result column="Profit" jdbcType="DECIMAL" property="profit"/>
<result column="ClosePrice" jdbcType="DECIMAL" property="closePrice"/>
<result column="Digits" jdbcType="TINYINT" property="digits"/>
<result column="Storage" jdbcType="VARCHAR" property="storage"/>
</collection>
</resultMap> <sql id="Base_Column_List">
id, closeorder, account, symbol, cmd, Volume, OpenTime, OpenPrice, SL, TP, Magic,
Comment, timestamp, Profit, ClosePrice, Digits, Storage
</sql> <select id="selectCloseOrderList" resultMap="customResultMap">
select
<include refid="Base_Column_List"/>
from closeorder where account in(select account from mt4list_rel)
</select>
</mapper>

dao文件

package com.kflh.boxApi.chooseSignalSource.dao;

import com.kflh.boxApi.chooseSignalSource.entity.CloseOrder;
import com.kflh.boxApi.chooseSignalSource.entity.CloseOrderList; import java.util.List;
import java.util.Map; public interface CloseOrderMapper { List<CloseOrderList> selectCloseOrderList(); }

CloseOrderServiceImpl文件

package com.kflh.boxApi.chooseSignalSource.service.impl;

import com.kflh.boxApi.chooseSignalSource.entity.CloseOrder;
import com.kflh.boxApi.chooseSignalSource.dao.CloseOrderMapper;
import com.kflh.boxApi.chooseSignalSource.entity.CloseOrderList;
import com.kflh.boxApi.chooseSignalSource.service.CloseOrderService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map; /**
* @program: BoxApi
* @description:
* @author: TheEternity Zhang
* @create: 2019-02-27 09:16
*/
@Slf4j
@Service
public class CloseOrderServiceImpl implements CloseOrderService { @Autowired
CloseOrderMapper closeOrderMapper; @Override
public Map<String, Object> selectSignalSource() {
//取出数据
List<CloseOrderList> closeOrderLists=closeOrderMapper.selectCloseOrderList();
//数据分组细化
Map<String,List<CloseOrder>> map=new HashedMap();
closeOrderLists.forEach(closeOrderList ->{
String account=closeOrderList.getAccount();
List<CloseOrder> list=closeOrderList.getCloseOrderList();
map.put(account,list);
} );
log.info("list.size={}",closeOrderLists.size());
return null;
}
}

CloseOrder文件

package com.kflh.boxApi.chooseSignalSource.entity;

import lombok.Data;

import java.math.BigDecimal;
@Data
public class CloseOrder {
private Integer id; private Integer closeOrder; private Integer account; private String symbol; private Byte cmd; private Double volume; private Integer openTime; private BigDecimal openPrice; private BigDecimal sl; private BigDecimal tp; private Integer magic; private String comment; private Integer timestamp; private BigDecimal profit; private BigDecimal closePrice; private Byte digits; private String storage; }

CloseOrderList文件

package com.kflh.boxApi.chooseSignalSource.entity;

import lombok.Data;

import java.util.List;

/**
* @program: BoxApi
* @description:
* @author: TheEternity Zhang
* @create: 2019-02-27 15:19
*/
@Data
public class CloseOrderList { private String account; private List<CloseOrder> closeOrderList; }

上面是整个操作文件,下面讲解:

在mapper.xml文件中resultMap(customResultMap)配置详情:

<id property="account" column="account"/>

上面的代码为设置按照分组的字段,按照account字段进行分组

<collection property="closeOrderList" ofType="com.kflh.boxApi.chooseSignalSource.entity.CloseOrder">
<result column="id" jdbcType="INTEGER" property="id"/>
<result column="closeorder" jdbcType="INTEGER" property="closeOrder"/>
<result column="account" jdbcType="INTEGER" property="account"/>
<result column="symbol" jdbcType="VARCHAR" property="symbol"/>
<result column="cmd" jdbcType="TINYINT" property="cmd"/>
<result column="Volume" jdbcType="DOUBLE" property="volume"/>
<result column="OpenTime" jdbcType="INTEGER" property="openTime"/>
<result column="OpenPrice" jdbcType="DECIMAL" property="openPrice"/>
<result column="SL" jdbcType="DECIMAL" property="sl"/>
<result column="TP" jdbcType="DECIMAL" property="tp"/>
<result column="Magic" jdbcType="INTEGER" property="magic"/>
<result column="Comment" jdbcType="VARCHAR" property="comment"/>
<result column="timestamp" jdbcType="INTEGER" property="timestamp"/>
<result column="Profit" jdbcType="DECIMAL" property="profit"/>
<result column="ClosePrice" jdbcType="DECIMAL" property="closePrice"/>
<result column="Digits" jdbcType="TINYINT" property="digits"/>
<result column="Storage" jdbcType="VARCHAR" property="storage"/>
</collection>

上面的collection为按照id中字段account分组后形成的集合的定义

<collection property="closeOrderList" ofType="com.kflh.boxApi.chooseSignalSource.entity.CloseOrder">
//实体类中的定义
private List<CloseOrder> closeOrderList;

上面的collection中property属性值对应的CloseOrderList实体类中的定义的名字closeOrderList

<collection property="closeOrderList" ofType="com.kflh.boxApi.chooseSignalSource.entity.CloseOrder">

上面ofType对应的值为为CloseOrder实体类,为collection中具体的值

<select id="selectCloseOrderList"  resultMap="customResultMap">
select
<include refid="Base_Column_List"/>
from closeorder where account in(select account from mt4list_rel)
</select>

上面的sql语句中此时不需要在进行group by操作,因为在resultMap中已经进行了分组操作了

List<CloseOrderList> selectCloseOrderList();

上面为接收的时候以封装的集合进行接收

mybatis从数据库中取数据且分组,返回分组数据的更多相关文章

  1. 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表

    最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...

  2. php从mysql数据库中取数据

    php从数据库中取数据  面向过程 <?php $server_name="localhost:3306"; //数据库服务器名称 $username="root& ...

  3. loadrunner 参数化-如何从数据库中取数据-连接数据库进行参数化

    LoadRunner提供两种参数化取值方式,一种是手动编辑,另一种就是通过连接数据库取值.一般在大型业务并发压力测试时,数据量肯定也都是非常大的,所以手动去编辑就不切实际了,这时用连接数据库的功能就方 ...

  4. [oracle] 如何使用myBatis在数据库中插入数据并返回主键

    在MyBatis中,希望在Oracle中插入数据的同时返回主键值,而非插入的条数. ① oracle使用 selectKey. U_USER_INFO_SEQ 是在数据库中定义好的这张表关联的序列se ...

  5. JDBC:从数据库中取数据的一个bug

    先看错误信息: java.sql.SQLException: Before start of result set at com.mysql.jdbc.SQLError.createSQLExcept ...

  6. mybatis从数据库中取到的date格式不是yyyy-MM-dd HH:mm:ss

    问题:sqlserver中的存储时间格式为date,pojo的时间属性也是date,直接mybatis取出的时间格式是带英语的那种,不满足客户要求. 解决:将pojo的时间属性改为string类型,在 ...

  7. vb.net从数据库中取数据

    1.设置从Model中的Sub Main 启动 2.程序结构 3.Model1 Imports System.Windows.Forms.Application Module Module1 Sub ...

  8. 从数据库中取数据(Stalberg.TMS.Data)

    using System; using System.Data; using System.Data.SqlClient; namespace Stalberg.TMS { //*********** ...

  9. Jmeter-从数据库中获取数据并作为变量传输

    再今天重新学习,从数据库中取数据,并作为变量传到下一个请求中. 首先第一步要导入mysql驱动包 一.添加JDBC Connection Configuration 设置链接 Database URL ...

随机推荐

  1. $CH0601\ Genius\ ACM$ 倍增优化DP

    ACWing Description 给定一个长度为N的数列A以及一个整数T.我们要把A分成若干段,使得每一段的'校验值'都不超过N.求最少需要分成几段. Sol 首先是校验值的求法: 要使得'每对数 ...

  2. JAVA字节码文件之常量池

    一.常量池的内容 一个java类中定义的很多信息都是由常量池来维护和描述的,可以将常量池看作是class文件的资源仓库,比如java类中定义的方法与变量信息.常量池中主要存储两类常量:字面量(文本字符 ...

  3. spring cloud微服务快速教程之(三)声明式访问Feign、负载均衡Ribbon

    0-前言 eureka实际上已经集成了负载均衡调度框架Ribbon: 我们有了各个微服务了,那怎么来调用他们呢,一种方法是可以使用 RestTemplate(如:String str= restTem ...

  4. KafkaProducer Sender 线程详解(含详细的执行流程图)

    目录 1.Sender 线程详解 2.RecordAccumulator 核心方法详解 温馨提示:本文基于 Kafka 2.2.1 版本. 上文 <源码分析 Kafka 消息发送流程> 已 ...

  5. 程序员必知的技术官网系列--mysql篇

    mysql 官网 https://www.mysql.com/ 官网布局很简单, 其中常用的两块就是下载和文档这两块, 其中下载没什么可讲的, 本次重点依旧是文档. 首页 mysql 文档导航页 ht ...

  6. 【转】Spring面试问题集锦

    Q. 对于依赖倒置原则(Dependency Inversion Principle,DIP),依赖注入(Dependency Injection,DI)和控制反转(Inversion of Cont ...

  7. Arrays.sort() VS Arrays.parallelSort()

    英文原文地址:Arrays.sort vs Arrays.parallelSort 作者:baeldung 翻译:高行行 1. 概述 我们都使用过 Arrays.sort() 对对象或原始数据类型数组 ...

  8. js复制变量值

    来源:JavaScript高级程序设计(第3版)69页. 例如 : var a=1;   var b = a  ;      这里就是把a的值复制给变量  b   了. 但是 复制的变量值  分为  ...

  9. python封装简介

    1.效果图: 对比一: 对比二: 2.学习来源代码: # 封装是面向对象的三大特性之一 # 封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法 # 如何隐藏一个对象中的属性? # - 将对象的属 ...

  10. cogs 1176. [郑州101中学] 月考 Set 做法

    1176. [郑州101中学] 月考 ★★☆   输入文件:mtest.in   输出文件:mtest.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 在上次的月考中B ...