java - MyBatis 映射结果到 List在 MyBatis 存储库中
问题描述
我的数据库中有一行在此处输入图像描述
和java函数
@Select("<script>\n" +
"SELECT TARIFF FROM MY_TABLE WHERE ROW_ID = #{id}\n" +
"</script>\n")
List<String> findTariffById(@Param("id") String id);
如果我添加@ResultType(String.class)
,我会得到一个包含 1 个元素的列表:“classic;premium;my-conversation”
但我需要获取包含 3 个元素的列表:
“经典的”
“优质的”
“我的谈话”
如果我有 POJO 类关税
@Data
public class Tariff{
private List<String> name;
}
比我可以改变我的功能
@Select("<script>\n" +
"SELECT TARIFF FROM MY_TABLE WHERE ROW_ID = #{id}\n" +
"</script>\n")
@Results({
@Result(property = "name", column = "TARIFF", typeHandler = StringArrayListTypeHandler.class)}
)
Tariff findTariffById(@Param("id") String id);
而且要快乐..
但是,我需要得到List<String>
我可以在List<String>
不创建 POJO 的情况下获得吗?
PS StringArrayListTypeHandler 解析字符串到列表
解决方案
您可以从第一个结果开始,并将其拆分为数组列表。在我的代码摘录中,起始列表是空的,但正如评论的那样,您应该使用从 DB 初始化的大小为 1 的列表。因此,您使用分隔符“;”手动拆分字符串。
List<String> returnedListOfSizeOne = new ArrayList<>(); //.add("classic;premium;my-conversation")
List<String> properlySplitString = new ArrayList<>();
for(String string: returnedListOfSizeOne){
Collections.addAll(properlySplitString,string.split(";"));
}
推荐阅读
- architecture - 生命周期方法范式没有替代方案吗?
- node.js - 如何使用 nodejs 处理“两个或多个点 url”
- ios - 如何在 swift iOS 中使用 stompClient Lib 发送和接收消息?
- mongodb - 如何在 MongoDB 中有条件地显示/隐藏字段
- python - 我找不到这个网络抓取脚本的问题
- hybris - 如何在不触发滚动重启的情况下将 HAC 属性更改发送到 CCV2 门户中特定服务中的所有节点?
- kotlin - 如何在kotlin中访问一个复杂的实例变量
- python - Python 3.9 - 带队列的多线程
- apache - 带代理服务器的 Apache 代理通行证
- makefile - ld:在 make 命令后未找到架构 x86_64 的符号