怎么运用Java实现把Excel中的数据导入MySQL

一、pom文件

                    junit            junit            4.12                            org.springframework.boot            spring-boot-starter-test            test                            com.alibaba            easyexcel            2.1.7                            com.alibaba            fastjson            1.2.62                            org.springframework.boot            spring-boot-starter                            org.springframework.boot            spring-boot-starter-test            test                            com.mchange            c3p0            0.9.5.2                            com.baomidou            mybatis-plus-boot-starter            3.4.0                            org.springframework.boot            spring-boot-starter-jdbc                            mysql            mysql-connector-java            runtime                            org.projectlombok            lombok            true                            org.springframework.boot            spring-boot-starter-web                            org.projectlombok            lombok            true                            org.springframework.boot            spring-boot-starter-test            test            

二、配置文件

server.port=8080mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImplspring.datasource.url=jdbc:mysql://localhost:3306/ddb_resources?serverTimezone=UTCspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.username=rootspring.datasource.password=root

三、mapper文件

@Mapperpublic interface DdbBookNewWordMapper extends BaseMapper {}

四、service文件

@Servicepublic class DemoDAO {    @Autowired    DdbBookNewWordMapper mapper;        public void save(List list) {        // 如果是mybatis,尽量别直接调用多次insert,自己写一个mapper里面新增一个方法batchInsert,所有数据一次性插入        DdbBookNewWord newWord = new DdbBookNewWord();        System.out.println("插入数据开始===============================");        for (DataDemo001 info : list) {            newWord.setAppType(0);            newWord.setFkBookId(info.getFkBookId());            newWord.setWord(info.getWord());            newWord.setSimpleExplain(info.getSimpleExplain());            newWord.setImgUrl("/incoming/ddb/wordImg/"+info.getFkBookId()+"/"+info.getImgUrl());            newWord.setSoundUrl("/incoming/ddb/wordAudio/bookStudyMp3/"+info.getFkBookId()+"/"+info.getSoundUrl());            newWord.setCreateTimeInMs(1620983400709L);            newWord.setUpdateTimeInMs(1620983400709L);            System.out.println(newWord);            mapper.insert(newWord);        }        System.out.println("结束=========================");    }}

五、实体类(数据库对应)

@Data@AllArgsConstructor@NoArgsConstructor@ToStringpublic class DdbBookNewWord {    private int id;    private String fkBookId;    private String word;    private String simpleExplain;    private String imgUrl;    private long createTimeInMs;    private long updateTimeInMs;    private int appType;    private String soundUrl;}

六、excel对应的实体类

@Datapublic class DataDemo001 {    private String fkBookId;    private String bookeName;    private String moudle;    private String unit;    private String word;    private String soundUrl;    private String imgUrl;    private String simpleExplain;}

七、监听器

// 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去public class DataDemo001Listener extends AnalysisEventListener {//    DemoDAO demoDAO = SpringContextHolder.getBean(DemoDAO.class);    private static final Logger LOGGER = LoggerFactory.getLogger(DataDemo001Listener.class);    /**     * 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收     */    private static final int BATCH_COUNT = 100;    List list = new ArrayList();    /**     * 假设这个是一个DAO,当然有业务逻辑这个也可以是一个service。当然如果不用存储这个对象没用。     */    private DemoDAO demoDAO;//    public DataDemo001Listener(DemoDAO demoDAO) {        // 这里是demo,所以随便new一个。实际使用如果到了spring,请使用下面的有参构造函数        this.demoDAO = demoDAO;    }    /**     * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来     *     * @param demoDAO     *///    public DataDemo001Listener(DemoDAO demoDAO) {//        this.demoDAO = demoDAO;//    }    /**     * 这个每一条数据解析都会来调用     *     * @param data    one row value. Is is same as {@link AnalysisContext#readRowHolder()}     * @param context     */    @Override    public void invoke(DataDemo001 data, AnalysisContext context) {        System.out.println(JSON.toJSONString(data));        list.add(data);        // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM        if (list.size() >= BATCH_COUNT) {            saveData();            // 存储完成清理 list            list.clear();        }    }    /**     * 所有数据解析完成了 都会来调用     *     * @param context     */    @Override    public void doAfterAllAnalysed(AnalysisContext context) {        // 这里也要保存数据,确保最后遗留的数据也存储到数据库        saveData();        LOGGER.info("所有数据解析完成!");    }    /**     * 加上存储数据库     */    private void saveData() {        demoDAO.save(list);    }}

八、测试类

 String path = "D:\java-demo\kuang-poi\";    @Test    public void simpleRead() {        String fileName = path+"悠游阅读成长计划-单词部分.xls";        // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭        EasyExcel.read(fileName, DataDemo001.class, new DataDemo001Listener(demoDAO)).sheet().doRead();    }

九、启动类(没啥用)

@MapperScan("com.example.demo.mapper")@ComponentScan({"com.example.demo.test","com.example.demo.service"})@SpringBootApplicationpublic class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }}

以上就是怎么运用Java实现把Excel中的数据导入MySQL的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/152525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
老外惊呆了!网易《无限大》团队规模800多人
上一篇 2025年12月3日 18:15:37
linux怎么修改字符集
下一篇 2025年12月3日 18:18:41

相关推荐

  • 【创建】印度启动创建本土AI基础模型计划:目标训出“有文化特色”的模型;《财富》揭晓2025全球最受赞赏公司榜单

    全球科技动态速览:苹果霸榜,印度ai崛起,deepseek惊艳 苹果持续领跑全球最受赞赏公司榜单 《财富》杂志近日发布2025全球最受赞赏公司榜单,苹果公司连续18年荣登榜首,展现其强大的品牌影响力和持续创新能力。微软、亚马逊、英伟达和伯克希尔·哈撒韦紧随其后,位列前五。榜单涵盖全球30个国家和地区…

    2026年9月5日
    300
  • MySQL中的人生见证

        每一种语言都有自己的注释方式,代码量越多,代码注释的重要性也就越明显。一般情况下,注释可以出现在程序中的任何位置,用来向用户或程序员提示或解释程序的功能及作用。本文主要介绍mysql中的注释。 1.字段注释 create table test1( id int primary key com…

    2026年9月5日
    100
  • WPS文档怎样转为Word_WPS文档转为Word的实用方法介绍

    可通过WPS的“另存为”功能将文档转为.docx或.doc格式;2. 使用在线工具如Smallpdf上传WPS文件并转换为Word;3. 复制WPS内容粘贴至新建Word文档;4. 借助AnyConv等第三方软件批量离线转换。 如果您需要将WPS文档内容在不同设备或软件中使用,但接收方无法打开WPS…

    2026年9月5日
    000
  • 高德鹰眼守护预警会很耗电吗_高德鹰眼守护预警耗电情况真实测评

    开启“鹰眼守护”功能会增加一定耗电,主要因GPS、网络传输和后台运算持续运行。实测显示,60分钟城市导航耗电约6%(iPhone 15 Pro),4小时高速行驶耗电约22%(安卓5000mAh电池),信号弱区域耗电提升15%-20%。通过关闭屏幕常亮、启用省电模式、使用车载充电及更新App可有效降低…

    2026年9月5日
    200
  • mysql启动创建不了pid是什么原因

    mysql启动创建不了pid的原因:1、端口被占用;2、生成pid文件的目录mysql的权限不足;3、该mysql对应的my.cnf配置文件错误;4、mysql的启动脚本有问题;5、该mysql有残余数据影响了服务的启动。 本教程操作环境:windows7系统、mysql8.0.22版,DELL G…

    2026年9月5日
    100
  • Java面试题库哪里找?

    高效备战Java面试:精选题库推荐 Java面试准备的关键在于充分了解常见面试题型。本文推荐一个GitHub资源,助你轻松应对Java面试挑战。 许多Java面试题反复出现,因此拥有一个高质量的题库至关重要。以下GitHub仓库提供了海量Java面试题,涵盖核心技术、常用框架和开发工具等方面: Ja…

    2026年9月5日
    500
  • Firefox出现严重零日漏洞,提醒用户尽快升级最新版本

    mozilla 推出了 firefox 67.0.3 和 firefox esr 60.7.1 更新,旨在紧急解决一个刚被发现的 0day 漏洞。安全公告中详细说明了问题:在 array.pop 的处理过程中存在缺陷,导致操作 javascript 对象时可能发生类型混淆漏洞。这一情况可能会引发可被…

    2026年9月5日
    400
  • 怎么检查看到mysql的用户名和密码

    怎么检查看到mysql的用户名和密码怎么检查看到mysql的用户名和密码怎么检查看到mysql的用户名和密码怎么检查看到mysql的用户名和密码

    查看mysql的用户名和密码的方法:首先打开Navicat并找到mysql;然后打开mysql数据库连接,单击工具栏中的【用户】选项;最后可以看到所有mysql用户和密码。 本教程操作环境:windows7系统、mysql8.0.22&&Navicat版,DELL G3电脑。 查看m…

    2026年9月5日 用户投稿
    100
  • Maven pom.xml 中resource配置有何作用?

    理解Maven pom.xml 中的resource配置 Maven项目构建过程中,pom.xml 文件中的 配置项用于指定需要包含在最终构建包(例如JAR或WAR)中的额外资源文件。 默认情况下,Maven会自动包含src/main/resources目录下的所有文件。然而,有时需要更精细的控制,…

    2026年9月5日
    000
  • WordPress插件邮件通知接收者自定义指南

    本文详细介绍了如何在不修改插件核心文件的前提下,利用WordPress的过滤器(Filter Hook)机制,自定义第三方插件(如Booking Activities)的邮件通知接收者。通过分析过滤器参数、编写自定义函数并注册到bookacti_email_notification_data钩子,您…

    2026年9月5日
    000
  • 英伟达平台上线DeepSeek R1

    nvidia发布deepseek r1推理开放模型,现已在nvidia nim平台提供预览版。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ DeepSeek R1是一款先进的开放模型,其强大的推理能力使其能够胜任复杂逻辑推理、数学计算、编…

    2026年9月5日
    000
  • mysql中插入表数据中文乱码怎么办

    mysql中插入表数据中文乱码怎么办mysql中插入表数据中文乱码怎么办mysql中插入表数据中文乱码怎么办mysql中插入表数据中文乱码怎么办

    mysql中插入表数据中文乱码的解决办法:1、检查本地mysql安装文件目录的默认编码方式是否是utf8;2、启动mysql服务,输入相关命令将默认数据库表的字符集编码改为utf8;3、重启服务即可。 本教程操作环境:windows7系统、mysql8.0.22版,DELL G3电脑。 mysql中…

    2026年9月5日 用户投稿
    200
  • windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况

    windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况

    在windows 10系统下,如何查询和强制结束占用8080端口的程序?以下是详细步骤: 首先,在控制台执行命令,列出所有端口的使用情况: netstat -ano 接下来,查询指定的8080端口被占用的情况。在上图中,本地地址列中的冒号后面的数字即为端口号: netstat -aon|findst…

    2026年9月5日 用户投稿
    100
  • mysql修改语句

    在mysql中可以使用【alter table 旧表名 rename 新表名;】语句修改表名,如【mysql> alter table TYPE rename type;】。 本文操作环境:windows10系统、mysql 5.7、thinkpad t480电脑。 mysql修改语句如下: …

    2026年9月5日
    000
  • 详解MySQL线程状态

    文章目录 一、show processlist二、command命令类型三、用户线程状态四、dump线程状态五、IO线程状态六、SQL 线程状态七、 主从连接线程状态 八、事件调度线程状态 相关免费学习推荐:mysql视频教程 一、show processlist 立即进入“豆包AI人工智官网入口”…

    2026年9月5日
    100
  • 通过ssh连接aws(亚马逊 云服务器 实例)

    通过ssh连接aws(亚马逊 云服务器  实例)通过ssh连接aws(亚马逊 云服务器  实例)通过ssh连接aws(亚马逊 云服务器  实例)通过ssh连接aws(亚马逊 云服务器  实例)

    一、windows用户 (1)第一步:配置服务器信息 打开xshell,新建连接,在菜单“连接”填写服务器信息,主机选项可以填写AWS实例的DNS地址,也可以填写外网IP,端口默认,其它内容不是重点,不再赘述。 (2)第二步:浏览当初创建实例保存在本地的.pem文件,即密钥,我的是key.pem 选…

    2026年9月5日 用户投稿
    100
  • 讯飞星火怎么帮我学习外语_讯飞星火外语学习辅助功能

    讯飞星火通过个性化口语陪练、智能词汇记忆、语法解析与写作润色、阅读理解与文化背景补充四大核心功能,提供远超翻译工具的外语学习支持。它能实时纠正发音偏差,模拟真实对话场景提升口语表达;基于遗忘曲线智能推荐词汇,并结合语境造句拓展用法;深入分析语法错误并解释修改原因,辅助写作逻辑与语言地道性提升;在阅读…

    2026年9月5日
    000
  • mysql如何修改字段类型

    mysql如何修改字段类型mysql如何修改字段类型mysql如何修改字段类型mysql如何修改字段类型

    在mysql中,可以使用“ALTER  TABLE 表名 MODIFY [COLUMN] 字段名 数据类型 类型长度  默认值  注释;”语句来修改字段类型。该语句不仅可以修改字段类型,还可以修改类型长度、默认值、注释。 本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。 …

    2026年9月5日 用户投稿
    200
  • 如何用代码实现程序窗口的切换?

    程序化窗口切换:告别Alt+Tab 本文介绍如何使用代码实现程序窗口的切换,摆脱繁琐的Alt+Tab操作。 我们将学习如何通过编程方式在不同应用程序窗口之间切换焦点。 实现步骤及原理 窗口切换的核心在于三个步骤: 获取窗口句柄: 首先,我们需要找到目标程序窗口的唯一标识符——窗口句柄。这通常需要使用…

    2026年9月5日
    100
  • 免费制作演示文稿 永久免费PPT模板下载网站

    永久免费的PPT模板网站推荐:OfficePlus、稻壳儿免费专区、第一PPT、51PPT模板网、扑奔网、PPT世界、Presentationload和HiPPTer,涵盖大厂资源、老牌站点与特色设计平台,均支持长期免费下载,适合学生、教师及职场人士使用。 想找永久免费的PPT模板网站?这事儿不难,…

    2026年9月5日
    200

发表回复

登录后才能评论
关注微信