list 和 collection匹配
2022-05-19 接手项目以来遇到过许多问题,今天聊一下mybatis collection
collection 作为集合操作的一定要使用List来对应接收数据。以下是使用。
首先配置好mybatis的jar和数据库驱动,web等
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
接下来编写实体类 Company 和 WebData
@Data
public class Company {
private String companyId;
private String companyName;
private List<WebData> or; // 这里一定要用List
}
@Data
public class WebData {
private Integer id;
private String assc;
}
实体类关系or 用List去承接数据库返回的数据,一定要用List。set不可以,
编写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="org.danyuan.application.dao.WebDao">
<resultMap id="baseCompanyMap" type="org.danyuan.application.po.Company">
<id column="company_id" property="companyId"/>
<result column="company_name" property="companyName"/>
<collection property="or" ofType="org.danyuan.application.po.WebData">
<id column="id" property="id"/>
<result column="assc" property="assc"/>
</collection>
</resultMap>
<select id="findAll" parameterType="java.lang.String" resultMap="baseCompanyMap">
SELECT
company_id ,
company_name,
id,
assc
FROM application.test_collection
WHERE company_id IN
<foreach collection="ids" item="idItem" open="(" close=")" separator="," index="idIndex">
${idItem}
</foreach>
</select>
</mapper>
这里我用一张表测试的,实际上使用collection 的情况绝大的概率是关联了子表的,这里面主要注意使用resultMap 的写法,返回结果会自动进行数据合并company_id相同的数据,id不同的添加到list中下面是我的测试数据

编写测试Service方法 然后提供一个web接口查看返回值
public List<Company> test() {
logger.info("开始测试");
List<Company> list = webDao.findAll(new String[] { "123456", "444" });
logger.info("测试 list size= {}", list.size());
list.forEach(aa -> {
logger.info("测试 web.size={} aa= {}", aa.getOr().size(), aa.toString());
});
logger.info("测试结束");
return list;
}
接口返回

控制台打印
2022-05-20 11:11:02.378 INFO 7176 --- [p-nio-80-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2022-05-20 11:11:02.524 INFO 7176 --- [p-nio-80-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
JDBC Connection [HikariProxyConnection@1380765898 wrapping com.mysql.cj.jdbc.ConnectionImpl@22eec6e4] will not be managed by Spring
==> Preparing: SELECT company_id , company_name, id, assc FROM application.test_collection WHERE company_id IN ( 123456 , 444 )
==> Parameters:
<== Columns: company_id, company_name, id, assc
<== Row: 123456, aaa, 1, ssss
<== Row: 123456, aaa, 2, 4444
<== Row: 123456, aaa, 3, 456789
<== Row: 123456, aaa, 4, 444445w
<== Row: 444, 44, 5, 56
<== Row: 444, 54, 6, 55
<== Total: 6
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2cc4c8e4]
2022-05-20 11:11:02.579 INFO 7176 --- [p-nio-80-exec-1] o.d.application.service.CompanyService : 测试 list size= 2
2022-05-20 11:11:02.580 INFO 7176 --- [p-nio-80-exec-1] o.d.application.service.CompanyService : 测试 web.size=4 aa= Company(companyId=123456, companyName=aaa, or=[WebData(id=1, assc=ssss), WebData(id=2, assc=4444), WebData(id=3, assc=456789), WebData(id=4, assc=444445w)])
2022-05-20 11:11:02.580 INFO 7176 --- [p-nio-80-exec-1] o.d.application.service.CompanyService : 测试 web.size=2 aa= Company(companyId=444, companyName=44, or=[WebData(id=5, assc=56), WebData(id=6, assc=55)])
2022-05-20 11:11:02.580 INFO 7176 --- [p-nio-80-exec-1] o.d.application.service.CompanyService : 测试结束
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/
我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有
我在尝试使用Faraday将文件上传到网络服务时遇到问题。我的代码:conn=Faraday.new('http://myapi')do|f|f.request:multipartendpayload={:file=>Faraday::UploadIO.new('...','image/jpeg')}conn.post('/',payload)尝试发布后似乎没有任何反应。当我检查响应时this是我所看到的:#:post,:body=>#,#,@opts={}>,#],@index=0>>,#>],@ios=[#,#,@opts={}>,#],@index=0>,#],@index=0>
我使用raise(ConfigurationError.new(msg))引发错误我试着用rspec测试一下:expect{Base.configuration.username}.toraise_error(ConfigurationError,message)但这行不通。我该如何测试呢?目标是匹配message。 最佳答案 您可以使用正则表达式匹配错误消息:it{expect{Foo.bar}.toraise_error(NoMethodError,/private/)}这将检查NoMethodError是否由privateme
深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG
文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk=Var(yt)Cov(yt,yt−k)其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞