# Java核心技术典型案例-基于Spring Boot2.0 **Repository Path**: Chestnut9/JavaCoreB2 ## Basic Information - **Project Name**: Java核心技术典型案例-基于Spring Boot2.0 - **Description**: Java核心技术-典型案例与面试实战系列(基于Spring Boot2.0) 1.APP应用版本管理 (1)分页模糊搜索 (2)新增与获取详情 (3)复杂SQL关联查询 2.Java生成二维码 (1)基于Google开发工具包生成二维码图片 (2)基于Hutool开发工具包生成二维码图片 3.大数据量级别的导出 (1)多线程批量预生成百万级别的数据 (2)基于POI导出Excel (3)基于EasyExcel导出Excel(多线程) - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2022-01-23 - **Last Updated**: 2022-01-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 一、企业项目功能需求开发:APP应用版本发布管理 1. 通用开发流程:了解功能需求(业务场景) -> 设计数据库表 -> mybatis逆向工程生成entity/mapper/mapper.xml -> 编写controller/service/util... -> postman自测 -> 发布测试环境与前端联调; 2. 业务背景:APP管理模块,用于管理APP应用的基本信息、历史发布版本、所属操作系统 和 终端设备类型,其中,终端设备类型可以有多个; 3. 功能需求:提供查询功能,可以根据App名称等基本信息查询出每个APP应用的发布历史,包括基本信息以及对应的操作系统和终端设备类型。 数据案例(一行一行的展示): 1:微信APP+IOS+phone、pad、other 2:微信APP+Android+phone、pad、 3:抖音APP+IOS+phone、pad、other 4:抖音APP+Android+phone 搜索过程: 1、当搜索条件:微信时 ->:1、2 2、当搜索条件:抖音、Android、phone 时 ->:4 职责:设计表与编写代码开发功能模块 复杂SQL关联查询:FIND_IN_SET() GROUP_CONCAT() 遇到的问题:数据预加载的两种方式: 1、@postConstruct:项目启动过程中完成预加载,使用场景-针对于当前类文件 2、CommandLineRunner接口:项目启动完成后预加载,使用场景-服务于整个项目 二、Java生成二维码 二维码图片分为普通二维码和中间带图片的二维码 应用场景: 1.溯源系统中为产品生产的二维码(供消费者扫码追溯) 2.进销存系统中的商品二维码(供扫码枪扫码入库、出库) 两种实现方式: 1.基于Google开发工具包生成二维码图片 2.基于Hutool开发工具包生成二维码图片 两种生成形式: 1.以图片文件的形式存储于物理文件目录 2.以图片流的形式直接返回给前端调用者 三、大数据量级别的导出 如何解决百万级别数据量的Excel导出: (1)多线程批量预生成百万级别的数据 (2)基于POI导出Excel (3)基于EasyExcel导出Excel(多线程) 思考:数据从何而来->使用多线程批量预生成百万级别的数据 踩坑场景:mybatis动态拼接,批量添加数据,因为数据太多,拼接过多,导致MySql数据库中插入大于1m的数据时,程序报错。 解决办法:修改mysql的属性 max_allowed_packet即可。 修改办法:打开mysql的根目录,找到my.ini文件,再文件的[mysqld]下面添加一行max_allowed_packet = 20M,保存之后重启mysql即可。 1.基于@Excel注解方式的POI导出百万级别数据 缺点:耗时,耗内存,容易出现内存溢出 优化方案:数据库表加索引提高查询速度 + 分多线程(对应着分页)批量查询数据 2.基于@ExcelProperty注解方式的EasyExcel导出百万级别数据 推荐使用,使用于大数据量的Excel导出