当前位置: 首页 > news >正文

A TupleBackedMap cannot be modified Mybatis分页,使用List<Map>接参,无法修改map的解决方案

问题描述

当使用Mybatis 进行Page分页,再使用Page< map >作为接受参数。此时尝试修改map则会报错。
报错为

java.lang.UnsupportedOperationException: A TupleBackedMap cannot be modified

解决方案

使用新的数组,使用反射,构建工具类,自动将原值拷贝到对应的类上,完成转换。直接上代码

/*** 用于解决mybatis 查询List<map>后无法修改的问题* @author hh* @date 2023/8/3*/
public class MybatisMapUpdateUtils {public static void main(String[] args) throws Exception {Map<String,Object> map  = new HashMap<>();map.put("userName","吉吉强");List<Map<String,Object>>list = new ArrayList<>();list.add(map);List<UserDto> object = (List<UserDto>) getObject(list, UserDto.class);System.out.println(object);}public static Object getObject(List<Map<String,Object>>map, Class className) throws Exception {List<Object> arrayList = new ArrayList<>();for (Map<String,Object> vo: map){Constructor constructors = className.getConstructor();Object instance = constructors.newInstance();for (String key:vo.keySet()){System.out.println("key=  "+key+"   and value=  "+vo.get(key));try {Field field = className.getDeclaredField(key);field.setAccessible(true);field.set(instance,vo.get(key));} catch (Exception e){System.out.println("field not found");}}arrayList.add(instance);}return  arrayList;}}

测试打印后,结果正常

key=  userName   and value=  吉吉强
[UserDto(userName=吉吉强)]进程已结束,退出代码0
http://www.lryc.cn/news/115898.html

相关文章:

  • Leetcode-每日一题【剑指 Offer 13. 机器人的运动范围】
  • WEB集群——负载均衡集群
  • ubuntu 20.0.4 搭建nvidia 显卡环境
  • Windows环境下通过 系统定时 执行脚本方式 压缩并备份文件夹 到其他数据盘
  • C++系列二:STL教程-常用算法
  • 【css】渐变
  • idea打开多个项目需要开多个窗口(恢复询问弹窗)
  • 篇十三:策略模式:选择不同算法
  • Centos7.6 安装mysql过程全记录
  • Java中的Guava是什么?
  • vue.js兄弟组件方法调用b组件调用a组件方法
  • 【Kubernetes】二进制搭建
  • 【MFC】08.MFC消息,自定义消息,常用控件(MFC菜单创建大总结),工具栏,状态栏-笔记
  • Clickhouse 数据存储
  • c语言每日一练(3)
  • java基础-Stream(流)、File(文件)和IO
  • el-table实现指定列合并
  • 38.利用matlab解 有约束无约束的参数估计对比(matlab程序)
  • 什么是React?React与VU的优缺点有哪些?
  • 区块链技术助力慈善,为您的善举赋予全新力量!
  • 模拟实现消息队列项目(系列4) -- 服务器模块(内存管理)
  • STM32 LoRa源码解读
  • 【BASH】回顾与知识点梳理(十)
  • 【网络】应用层——HTTPS协议
  • Windows新版文件资源管理器经常在后台弹出的临时解决方案
  • 软考高项(八)项目整合管理 ★重点集萃★
  • 基于python+django开发的学生信息管理系统
  • mysql的高级查询语句
  • 04-8_Qt 5.9 C++开发指南_QTableWidget的使用
  • 《golang设计模式》第二部分·结构型模式-01-适配器模式(Adapter)