mybatis从数据库中取数据且分组,返回分组数据
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从数据库中取数据且分组,返回分组数据的更多相关文章
- 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表
最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...
- php从mysql数据库中取数据
php从数据库中取数据 面向过程 <?php $server_name="localhost:3306"; //数据库服务器名称 $username="root& ...
- loadrunner 参数化-如何从数据库中取数据-连接数据库进行参数化
LoadRunner提供两种参数化取值方式,一种是手动编辑,另一种就是通过连接数据库取值.一般在大型业务并发压力测试时,数据量肯定也都是非常大的,所以手动去编辑就不切实际了,这时用连接数据库的功能就方 ...
- [oracle] 如何使用myBatis在数据库中插入数据并返回主键
在MyBatis中,希望在Oracle中插入数据的同时返回主键值,而非插入的条数. ① oracle使用 selectKey. U_USER_INFO_SEQ 是在数据库中定义好的这张表关联的序列se ...
- JDBC:从数据库中取数据的一个bug
先看错误信息: java.sql.SQLException: Before start of result set at com.mysql.jdbc.SQLError.createSQLExcept ...
- mybatis从数据库中取到的date格式不是yyyy-MM-dd HH:mm:ss
问题:sqlserver中的存储时间格式为date,pojo的时间属性也是date,直接mybatis取出的时间格式是带英语的那种,不满足客户要求. 解决:将pojo的时间属性改为string类型,在 ...
- vb.net从数据库中取数据
1.设置从Model中的Sub Main 启动 2.程序结构 3.Model1 Imports System.Windows.Forms.Application Module Module1 Sub ...
- 从数据库中取数据(Stalberg.TMS.Data)
using System; using System.Data; using System.Data.SqlClient; namespace Stalberg.TMS { //*********** ...
- Jmeter-从数据库中获取数据并作为变量传输
再今天重新学习,从数据库中取数据,并作为变量传到下一个请求中. 首先第一步要导入mysql驱动包 一.添加JDBC Connection Configuration 设置链接 Database URL ...
随机推荐
- 从零开始のcocos2dx生活(一)内存管理
cocos中所有的对象都是继承自Ref基类,Ref的职责就是对对象进行引用计数管理 内存管理中最重要的是三个方法retain().release().autorelease() 在cocos中创建对象 ...
- 洛谷$P$2575 高手过招 博弈论
正解:博弈论 解题报告: 传送门! 阿西$gql$又双叒被题意杀辣,,,再不好好学语文吃枣药丸$TT$ 然后在$get$规则之后还有什么问题嘛,,, 就和这题差不多了,一个$easy$的阶梯问题罢辽, ...
- 基于Tesseract的OCR识别小程序
一.背景 先说下开发背景,今年有次搬家找房子(2020了应该叫去年了),发现每天都要对着各种租房广告打很多电话.(当然网上也找了实地也找),每次基本都是对着墙面看电话号码然后拨打,次数一多就感觉非常麻 ...
- 设置本地上网IP
在局域网中,我们经常需要根据网络连接环境来对本地连接的IP地址进行手动设置,那么如何对IP地址进行设置呢?下面小编就把教程介绍给大家. 1. 右击桌面“网上邻居”->选择“属性”,打开“网络共享 ...
- HTML 图片(image) 左右滑动
1.需求 需要用简单动画的形式将一组图片进行展示,图片数量不固定 2.效果如下: 3.思路 说到动画,首先想到使用-webkit-transition:;因为这个最简单好用,首先将图片都放在左侧,然后 ...
- 【GeneXus】开发移动APP时,如何使用Canvas进行布局?
当我们开发移动端APP的时候,经常遇到一种布局方式,那就是层级的布局,比如:一张照片我想在照片的上面显示它的名称,但不影响我照片展示的布局大小,也就是这个名称是浮在照片上的,如图: 如果要实现这样的布 ...
- PTA - 拓扑排序
一个项目由若干个任务组成,任务之间有先后依赖顺序.项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务.现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工 ...
- GitHub进阶之利用Git远程仓库篇
#在上一篇文章,相信大家对GitHub已经有了一个基础的理解 接下来我们来学习一下如何利用git来远程仓库 一,git是什么 git:一个免费的开源版本控制软件 用途:利用Git管理GitHub上的代 ...
- 开源导入导出库Magicodes.IE 导出教程
要点 导出特性 如何导出Excel表头 如何导出数据.如何进行数据的切割.如何使用筛选器 导出特性 ExporterAttribute Name: 名称(当前Sheet 名称) HeaderFontS ...
- java8 stream自定义分组求和并排序
public static void main(String[] args) { List<GroupDetailDTO> list = new ArrayList<>(); ...