MyBatis SelectList 输出 CopyOnWriteArrayList

2024-01-12

请耐心解答新手问题,因为我正在尝试同时学习 MyBatis 和 java。我有一个应用程序需要使用线程安全变量。根据一些研究和我对如何使用应用程序的想法,我决定使用 CopyOnWriteArrayList 而不是 Vector。

当我从 mybatis sql 会话中调用 selectList 时,有什么方法可以告诉它创建一个 CopyOnWriteArrayList 作为其返回而不是 ArrayList 吗?诚然,我的配置代码是两行而不是一行,但我内心深处的某些想法告诉我必须有更好的方法和/或我不是第一个遇到这种情况的人。

List<Team> teams = session.selectList("getTeamsByGameID", gameID);
List<Team> arrayListReturn = new CopyOnWriteArrayList<Team>(teams);
return arrayListReturn;

提前致谢,


我知道有两种方法可以处理这个问题。

Option 1:使用Mapper类并指定要返回的List类型。

定义Mapper接口:

public interface TeamMapper {
  CopyOnWriteArrayList<Team> getTeamsByGameID();
}

您的映射器 xml 文件保持不变。执行查询的代码更改为:

TeamMapper m = session.getMapper(TeamMapper.class);
List<Team> lt = m.getTeamsByGameID();
System.out.println(lt.getClass());  
  //=> prints out "class java.util.concurrent.CopyOnWriteArrayList"


Option 2:创建一个 ResultHandler 并将其传递到session.select() method.

这里使用 ResultHandler 接口。该接口要求您重写一个方法,handleResult,它给出了查询进行时从数据库返回的每个结果。

在你的例子中,你的 ResultHandler 看起来像这样:

public class TeamResultHandler implements ResultHandler {

  private List<Team> teams = new CopyOnWriteArrayList<Team>();

  @Override
  public void handleResult(ResultContext rc) {
    countries.add((Team) rc.getResultObject());
  }

  // provide a getter so you can retrieve it when finished
  public List<Team> getTeamList() {
    return teams;
  }
}

而不是使用selectList正如您上面所做的那样,您现在可以使用session.select(String, ResultHandler),像这样:

TeamResultHandler rh = new TeamResultHandler();
session.select("getTeamsByGameID", rh);
List<Team> lt = rh.getTeamList();
return lt;

此解决方案比您的解决方案更详细(需要一个额外的类和查询代码中的三行,而不是 2 行),但它只创建一个列表,而不是两个,因此您必须决定哪一个最适合您的需求。

此外,ResultHandlers 对于其他事情也很有用 - 确保结果以某种方式排序或过滤或其他方式,以防万一您需要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis SelectList 输出 CopyOnWriteArrayList 的相关文章

  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • 通过SOCKS代理连接Kafka

    我有一个在 AWS 上运行的 Kafka 集群 我想用标准连接到集群卡夫卡控制台消费者从我的应用程序服务器 应用程序服务器可以通过 SOCKS 代理访问互联网 无需身份验证 如何告诉 Kafka 客户端通过代理进行连接 我尝试了很多事情 包
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • “java.net.MalformedURLException:未找到协议”读取到 html 文件

    我收到一个错误 java net MalformedURLException Protocol not found 我想读取网络上的 HTML 文件 mainfest uses permission android name android
  • 是否有任何简单(且最新)的 Java 框架可用于在 Swing 应用程序中嵌入电影?

    我正在构建一个小型 Swing 应用程序 我想在其中嵌入一部电影 重要的是 这个应用程序是一个 WebStart 应用程序 并且该库应该能够打包在我启动的 jnlp 中 即 不依赖于本机库 我知道并尝试过 JMF 但我认为与其他框架相比 其
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 如何在 Spring 属性中进行算术运算?

  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException

随机推荐

  • 如何在 Matlab 中将单个二维曲线绘制到颜色图上?

    我使用 Matlab 中现有的编译数据创建了一个平滑的颜色渐变二维等值线图 我将 x 轴 y 轴和 z 数据轮廓绘制为颜色图 我的目标是在颜色图上绘制一条二维曲线 代表单个 z 数据值 但我不知道如何做 有谁知道如何将 2 D 曲线绘制到
  • Dijkstra 的单源最短路径,带有权重为“w”的额外边

    在最近的一次采访中 我被要求实现单源最短路径算法 用于无向和正加权图 并稍作修改 即我们获得了权重为 w 的额外边缘 我们必须找到一条比 SSSP 算法计算的路径更短的路径 通过在两个尚未连接的节点之间连接权重 w 的额外边 这是一张图片
  • 在 Android 中使用 Google Maps API 从用户位置获取附近地点的结果

    这是第一次使用谷歌地图API和谷歌地点API 我正在做一个演示应用程序 它显示距离用户位置最近的医院列表 例如 以及到每家医院的路线 我能够使用下面的代码获取用户的位置 public class MainActivity extends A
  • 为什么对话框会删除其内容而不刷新?

    我遇到了一个非常奇怪的问题 窗口似乎正在擦除其内容 并且在擦除后没有重新绘制它 该对话框源自CDHtmlDialog 我认为这是问题的一部分 发生某种非确定性代码执行 导致某些代码在某些情况下先于其他代码执行 而在其他情况下则相反 涉及的消
  • android可扩展列表视图从firebase检索数据

    我该如何使用firebase检索我的数据Expandable listview my firebase节点是这样的 适配器类 public class CustomExpandableListViewAdapter extends Base
  • 等待进程结束

    您好 我必须编写必须打开一些系统属性的程序 例如 Process sound new Process sound StartInfo FileName mmsys cpl sound Start Place 1 Process device
  • numpy:沿新轴扩展数组?

    当然一定有办法做到这一点 我无法解决 我有一个 9 4 数组 我想沿第三轴重复它 4096 次 所以它变得简单 9 4 4096 9 4 数组中的每个值简单地重复 4096 次沿着新的轴线 如果我可疑的 3D 图有意义 对角线是 z 轴 4
  • 雅可比坐标系中的椭圆曲线加法

    我尝试在素数场上的椭圆曲线上添加两个点 将这些点从仿射 仿射坐标转换 但无法获得正确的结果 我正在测试的曲线有 a 0 任何人都可以看到出了什么问题吗 From Affine BigInteger X1 P x BigInteger Y1
  • SpringBoot应用程序发布并读取ActiveMQ主题

    我有两个应该从一个主题中读取的接收器 但只有一个随机接收者收到消息 就像它实际上是从队列而不是主题中读取的一样 我读了this https stackoverflow com questions 40144561 how to listen
  • 将图框与 PyCharm 结合使用

    我花了将近两天的时间在互联网上滚动 但无法解决这个问题 我正在尝试安装图形框架包 https spark packages org package graphframes graphframes 版本 0 2 0 spark2 0 s 2
  • Android 设备与本地主机服务器的连接[重复]

    这个问题在这里已经有答案了 我是安卓新手 我正在开发一个使用 MySQL 的应用程序 该应用程序在模拟器中运行良好 但现在我需要在 Android 设备中运行该应用程序 我能做些什么 正如第一条评论中所述 您应该检查文件 AndroidMa
  • jQuery:如何使用 live() 捕获按键

    我需要捕获某些动态输入上的选项卡按键事件 但使用按键事件的正常语法似乎无法捕获按键代码 input live keypress function e if e which 9 alert Tab pressed 当我在 firebug 中通
  • 在shell脚本中创建重复字符的字符串[重复]

    这个问题在这里已经有答案了 我需要生成一串点 字符 作为变量 即 在我的 Bash 脚本中 用于输入15我需要生成这个长度为 15 的字符串 我需要以不同的方式这样做 我尝试使用它作为基础 来自 Unix com http www unix
  • 如何限制EditText输入内容

    我正在尝试创建一个简单的计算器 它提供 EditText 供用户输入数字 允许输入的内容应该是 1 2 3 4 5 6 7 8 9 0 我知道可以使用以下代码来限制输入内容 android digits 1234567890 android
  • SQL Server 使用 union all 和分页

    当我们使用 union all 从两个表获取结果时 如何应用分页 下面是这里的代码 我在已用于分页的 row num 列中获取重复值 WITH resultSetCTE AS SELECT ROW NUMBER OVER ORDER BY
  • 动态更改 IOS 应用程序的自定义 URL 方案

    有没有办法在运行时动态更改 ios 应用程序的自定义 URL 方案 我只能找到有关如何静态定义自定义方案的信息 即 自定义方案是在配置文件中预定义的 我想知道这是否可以在运行时动态完成 不 您不能动态更改自定义 url 自定义 url 方案
  • 指定 Winhttp 必须使用哪个网卡/连接

    我有一个 C 应用程序 它利用 Winhttp 发出 Web 请求 有没有办法指定 WinHTTP 必须使用哪个网卡进行连接 WinHTTP 或 WinInet 没有公开可用的选项来执行接口关联 它似乎在 System Net 中通过请求的
  • JAX-RS 和长轮询

    我正在尝试将长轮询与 JAX RS 泽西实现 一起使用 但它无法按我的预期工作 也许我误解了什么 我将不胜感激任何建议 请注意 出于安全原因 不可以选择使用反向连接 例如 Atmosphere Comet 等 并不是说我目前正在使用 Tom
  • SonataAdmin 子管理路由在调试中可见但未找到

    php bin console debug router grep postboxmessage pt RG admin mea postbox postboxmessage list ANY ANY ANY admin mea postb
  • MyBatis SelectList 输出 CopyOnWriteArrayList

    请耐心解答新手问题 因为我正在尝试同时学习 MyBatis 和 java 我有一个应用程序需要使用线程安全变量 根据一些研究和我对如何使用应用程序的想法 我决定使用 CopyOnWriteArrayList 而不是 Vector 当我从 m