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 ...
随机推荐
- DOCKER学习_002:Docker的容器管理
一 Docker的基本信息 前面已经安装了Docker,现在看一下已安装Docker的安装环境以及其他信息 1.1 系统环境 [root@docker-server3 ~]# uname -r -.e ...
- SpringBoot系列——启用https
前言 有时候我们需要使用https安全协议,本文记录在SpringBoot项目启用https 生成证书 自签名证书 使用java jdk自带的生成SSL证书的工具keytool生成自己的证书 1.打开 ...
- 【题解】ARC101F Robots and Exits(DP转格路+树状数组优化DP)
[题解]ARC101F Robots and Exits(DP转格路+树状数组优化DP) 先删去所有只能进入一个洞的机器人,这对答案没有贡献 考虑一个机器人只能进入两个洞,且真正的限制条件是操作的前缀 ...
- 【python小随笔】将一个列表的值,分成10个一组,遍历的时候每10个遍历一次
t = ['B071LF9R6G', 'B0714BP3H4', 'B0756FL8R7', 'B072HX95ZR', 'B07CX389LX', 'B07D9MZ7BD', 'B07D9L15L5 ...
- PS/2的相关知识
PS/2接口 很多微机上采用PS/2口来连接鼠标和键盘.PS/2接口与传统的键盘接口除了在接口外型.引脚有不同外,在数据传送格式上是相同的.现在很多主板用PS/2接口插座连接键盘,传统接口的键盘可以通 ...
- MySQL定时备份(全量备份+增量备份)
MySQL 定时备份 参考 zone7_ 的 实战-MySQL定时备份系列文章 参考 zmcyu 的 mysql数据库的完整备份.差异备份.增量备份 更多binlog的学习参考马丁传奇的 MySQL的 ...
- OOP之重载
PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的. 属性的重载通过调用类中的__set,__get,__isset,__unset方法来分别实现对不存在属性的赋值.读取.判断属性是否设 ...
- 揭秘webpack plugin
前言 Plugin(插件) 是 webpack 生态的的一个关键部分.它为社区提供了一种强大的方法来扩展 webpack 和开发 webpack 的编译过程.这篇文章将尝试探索 webpack plu ...
- Java同步与异步
一.关键字: thread(线程).thread-safe(线程安全).intercurrent(并发的) synchronized(同步的).asynchronized(异步的). volatile ...
- net 自带cache
using System.Web.Caching; Cache cache = new Cache();