使用json转实体类批量导入数据

一、说明:本文只写关键代码的实现

二、环境:

sqlserver

mybatisplus

java

springboot

idea

postman

三、前端:

1.json数据:

{

"data":[

{

"id":"1",

"name":"jack"

},

{

"id":"2",

"name":"rose"

}

]

}

2.postman:

(1)authorization:

key:Authorization

value:项目登录后看请求header的authorization信息复制

addto:header

(2)body:

raw

json

复制上述json

(3)输入正确url

(4)post请求

四、后端:

(1)引入com.Alibaba.fastjson.*

(2)public void important(@Requestbody JsonObject obj)

(3)List<User> list = Jsonarray.parseArray(obj.getjsonarray("data").tojsonstring()

,User.class)

(4)savebatch(list)

五、报错处理:

(1)savebatch报错看控制台打印信息,跟踪源码,我的打印信息第二行是iphelper的savebatch方法,设置断点,看异常详情

(2)可能的报错:实体类的字段类型错误,字段使用关键词错误,使用主键自增不是用导入的主键,唯一性约束等

(全文完)

### 使用EasyExcel将表格数据映射到Java实体类 为了实现通过EasyExcel将表格中的数据映射至Java实体类,需遵循特定流程并配置相应组件。此过程涉及定义实体类以及设置监听器来处理读取事件。 #### 定义实体类 当希望利用表头信息自动映射列实体属性时,在实体类中添加`@ExcelProperty`注解可指定每列所关联的字段及其顺序[^3]: ```java import com.alibaba.excel.annotation.ExcelProperty; public class User { @ExcelProperty(index = 0) private Long id; @ExcelProperty(index = 1) private String name; } ``` 上述代码片段展示了如何标注一个简单的User实体类用于接收来自Excel文档内两列——编号(id)与姓名(name)的信息。 #### 创建AnalysisEventListener子类 为捕获每一行记录的数据解析完成后的回调通知,应继承自`com.alibaba.excel.read.listener.AnalysisEventListener<T>`泛型接口,并重载其方法以适应具体业务逻辑需求[^4]: ```java import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListeners; import com.alibaba.excel.exception.ExcelDataConvertException; import java.util.ArrayList; import java.util.List; public class UserDataListener extends AnalysisEventListeners<User> { private final List<User> userList = new ArrayList<>(); /** * 这是一个数据库保存示例,这里会一行一行的返回head跟data信息给我们 */ @Override protected void invoke(User data, AnalysisContext context){ System.out.println("解析到一条数据:" + JSON.toJSONString(data)); this.userList.add(data); } /** * 所有数据解析完成了 都会在 doAfterAllAnalysed 方法中调用。 */ @Override protected void doAfterAllAnalysed(AnalysisContext context){ // 数据全部解析完毕之后的操作... } } ``` 这段程序实现了对单个用户实例化对象的收集工作,每当成功解释一行就将其追加进列表里等待后续批量入库或其他用途。 #### 实现读取功能 最后一步是在控制器或者其他服务层编写实际执行导入动作的方法体,借助于先前准备好的工具函数和监听机制即可轻松达成目标: ```java @Autowired private EasyExcelUtil easyExcelUtil; @GetMapping("/readWithEntityMapping") public ResponseEntity<List<User>> readUsersFromExcel() throws Exception{ File file = ResourceUtils.getFile("classpath:user.xlsx"); List<User> users = easyExcelUtil.read(file, User.class, new UserDataListener()); return ResponseEntity.ok(users); } ``` 以上就是完整的基于Spring Boot框架下运用EasyExcel库把电子表格里的条目化为内存中的POJO集合的方式介绍[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

humors221

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值