千家信息网

基于Java SSM如何实现Excel数据批量导入

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,今天就跟大家聊聊有关基于Java SSM如何实现Excel数据批量导入,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。导入Maven依赖
千家信息网最后更新 2025年02月05日基于Java SSM如何实现Excel数据批量导入

今天就跟大家聊聊有关基于Java SSM如何实现Excel数据批量导入,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

导入Maven依赖

        com.alibaba        easyexcel        ${easyexcel.version}

Mapper及映射文件

UserMapper.java

@Mapperpublic interface UserMapper {    int batchInsert(@Param("list") List list);}

UserMapper.xml

                                                                                  id, nickname, avatar, account, `password`, gender, tel, email, qq, wechat, salt,     info, `status`, create_time, update_time            insert into tb_user    (nickname, avatar, account, `password`, gender, tel, email, qq, wechat, salt, info,    `status`, create_time, update_time)    values          (#{item.nickname,jdbcType=VARCHAR}, #{item.avatar,jdbcType=VARCHAR}, #{item.account,jdbcType=VARCHAR},      #{item.password,jdbcType=VARCHAR}, #{item.gender,jdbcType=TINYINT}, #{item.tel,jdbcType=VARCHAR},      #{item.email,jdbcType=VARCHAR}, #{item.qq,jdbcType=VARCHAR}, #{item.wechat,jdbcType=VARCHAR},      #{item.salt,jdbcType=VARCHAR}, #{item.info,jdbcType=VARCHAR}, #{item.status,jdbcType=TINYINT},      #{item.createTime,jdbcType=TIMESTAMP}, #{item.updateTime,jdbcType=TIMESTAMP})      

Excel监听器

@Log4j2@Servicepublic class UserExcelListener extends AnalysisEventListener {        @Resource        private UserMapper userMapper;        /**         * 批处理阈值         */        private static final int BATCH_COUNT = 250;        @Getter        List list = new ArrayList<>(BATCH_COUNT);        @Override        public void invoke(User user, AnalysisContext analysisContext) { //逐行读取数据                log.info("********** 解析到一条数据:{}", JSON.toJSONString(user));                list.add(user);                if (list.size() >= BATCH_COUNT) {            System.out.println("已经解析"+list.size()+"条数据");                        //每250条,往数据库中存一次                        int batchInsertRes = userMapper.batchInsert(list);                        System.out.println(batchInsertRes);                        list.clear();                }        }        @Override        public void doAfterAllAnalysed(AnalysisContext analysisContext) {                log.info("**********所有数据解析完成!");        }}

测试

@ExtendWith(SpringExtension.class)@ContextConfiguration("/applicationContext.xml")public class ExcelUtilTest {    @Resource    private UserExcelListener userExcelListener;    @Test    void userListener(){        EasyExcel.read("E:\\Projects\\WorksDisplay\\data\\users.xlsx", User.class, userExcelListener)                .sheet()                .doRead();    }}

看完上述内容,你们对基于Java SSM如何实现Excel数据批量导入有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0