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 ...
随机推荐
- $NOIp$普及组做题记录
\([NOIp2014]\) 螺旋矩阵 \(Sol\) 直接模拟,一次走一整行或者一整列.复杂度\(O(n)\). \(Code\) #include<bits/stdc++.h> #de ...
- Python用PIL将PNG图像合成gif时如果背景为透明时图像出现重影的解决办法
最近在用PIL合成PNG图像为GIF时,因为需要透明背景,所以就用putpixel的方法替换背景为透明,但是在合成GIF时,图像出现了重影,在网上查找了GIF的相关资料:GIF相关资料 其中有对GIF ...
- 「Vijos 1283」「OIBH杯NOIP2006第二次模拟赛」佳佳的魔杖
佳佳的魔杖 背景 配制成功了珍贵的0号药水,MM的病治好了.轻松下来的佳佳意外的得到了一个好东西--那就是--一种非常珍贵的树枝.这些树枝可以用来做优质的魔杖!当然了,不能只做自己的,至少还要考虑到M ...
- 解决springmvc报错,java.lang.IllegalArgumentException:No converter found for return value of type: class .......
1.背景 最近在自学java中的三大框架 ssm,在 springmvc 与 mybatis 整合过程中用到 json 数据交互.因为看的视频的是比较早的嘛,一些配置.jar包什么的,要么跟 jdk ...
- nginx错误: [error] OpenEvent("Global\ngx_reload_10444") failed (2: The system cannot find the file specified)
执行nginx -s reload命令: nginx: [error] OpenEvent("Global\ngx_reload_10444") failed (2: The sy ...
- JS 中检测数组的四种方法
今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一 ...
- vue根据选择的月份动态展示当前月份的每一天并展示每一天所对应的星期几
我们在开发过程中所遇到的所有的奇奇怪怪的交互美其名曰用(奇)户(葩)体(需)验(求),而产品所谓的良好的交互效果,在我等开发人员眼里不值一提.不屑一顾.讨厌至极! 对于这样的需求,我通常都是: 但胳膊 ...
- Python开发 之 Websocket 的使用示例
1.唠唠叨叨 最近又回顾了下Websocket,发现已经忘的七七八八了.于是用js写了客户端,用python写了服务端,来复习一下这方面的知识. 2.先看一下效果吧 2.1.效果1(一个客户端连上服务 ...
- hdu - 4965
One day, Alice and Bob felt bored again, Bob knows Alice is a girl who loves math and is just learni ...
- Lambda表达式(lambda expression)⭐⭐⭐⭐⭐
原作者 lambda表达式(lambda expression)实际上是匿名函数一种表示形式, 即没有函数名的函数:参数列表=>表达式或语句块,在我看来主要目是为了简化代码编写,提高代码可读性而 ...