MyBatis

10w行级别数据的Excel导入优化记录

旧时模样 提交于 2020-10-16 08:52:21
需求说明 项目中有一个 Excel 导入的需求:缴费记录导入 由实施 / 用户 将别的系统的数据填入我们系统中的 Excel 模板,应用将文件内容读取、校对、转换之后产生欠费数据、票据、票据详情并存储到数据库中。 在我接手之前可能由于之前导入的数据量并不多没有对效率有过高的追求。但是到了 4.0 版本,我预估导入时Excel 行数会是 10w+ 级别,而往数据库插入的数据量是大于 3n 的,也就是说 10w 行的 Excel,则至少向数据库插入 30w 行数据。因此优化原来的导入代码是势在必行的。我逐步分析和优化了导入的代码,使之在百秒内完成(最终性能瓶颈在数据库的处理速度上,测试服务器 4g 内存不仅放了数据库,还放了很多微服务应用。处理能力不太行)。具体的过程如下,每一步都有列出影响性能的问题和解决的办法。 导入 Excel 的需求在系统中还是很常见的,我的优化办法可能不是最优的,欢迎读者在评论区留言交流提供更优的思路 声明:本文首发于博客园,作者:后青春期的Keats;地址: https://www.cnblogs.com/keatsCoder/ 转载请注明,谢谢! 一些细节 数据导入:导入使用的模板由系统提供,格式是 xlsx (支持 65535+行数据) ,用户按照表头在对应列写入相应的数据 数据校验:数据校验有两种: 字段长度、字段正则表达式校验等

Spring Boot入门系列(二十)快速实现Restful API 接口

浪尽此生 提交于 2020-10-16 00:48:00
spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis、整合Thymeleaf 模板引擎 等各种框架,同时也介绍了使用jdbcTemplate 操作数据库,配置多数据源 等系列内容。应该说spring boot 常用的功能基本上都覆盖到了。接下来说一说spring boot 比较实用的项目级的功能。首先会介绍spring boot 如何快速打造Restful API接口。 随着互联网化等逐渐深入,应用系统也变得越来越复杂,系统架构正在朝着微服务化,中台化的方向发展。这就需要各个系统、各个厂家之间的数据频繁交互。所以,使用 Restful 风格构建的应用接口适用于移动互联网厂商的业务场景,正在被越来越多的企业推荐使用。那么什么是 RESTful 呢? 一、什么是 RESTful RESTful 是目前最流行的互联网软件架构。REST(Representational State Transfer,表述性状态转移)一词是由 Roy Thomas Fielding 在他 2000 年博士论文中提出的,定义了他对互联网软件的架构原则,如果一个架构符合 REST 原则,则称它为 RESTful 架构。 Restful 相比于 SOAP 更加简单明了,它并没有一个明确的标准

我在搜刮了全网的Java学习分享后,精选了这些最强干货!!

扶醉桌前 提交于 2020-10-15 05:20:20
内容包含:Spring boot、Spring cloud、Dubbo、Redis、ActiveMQ、Nginx、Mycat、Spring、MongoDB、ZeroMQ、Git、Nosql、Jvm、Mecached、Netty、Nio、Mina、性能调优、高并发、tomcat 负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr 集群与应用、分布式实战、主从复制、高可用集群等。 有想获取以下干货视频资料的朋友:点赞+关注后,私信【Java干货】就可以了(一定要记得关注我,不然没办法回复陌生人私信) 学习路线图 坦克大战 干货视频,高级架构师最新java、spring、Redis、JVM、分布式、高并发。里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring,MyBatis,Netty源码分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点高级进阶干货 来源: oschina 链接: https://my.oschina.net/u/4389867/blog/4650809

apache-tomcat部署问题总结

假如想象 提交于 2020-10-14 20:26:37
@Tomcat启动项目警告: org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD... 问题描述:org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 项目运行之后还是显示404,大多数情况下,这个只是warning并非error,是不会影响运行的! 解决办法: 找到自己Tomcat安装路路径下的conf目录里面的catalina.properties文件中: tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\ 更改为: tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar @tomcat 默认登录名密码 在tomcat目录下,找到conf文件夹,然后找到tomcat-users.xml文件,添加如下信息 <role rolename="manager-gui"/> <user username="tomcat" password="123456"

Mybatis——实体类属性名和数据库字段名不同时的解决方案

别等时光非礼了梦想. 提交于 2020-10-14 18:13:57
Mybatis——实体类属性名和数据库字段名不同时的解决方案 参考文章: (1)Mybatis——实体类属性名和数据库字段名不同时的解决方案 (2)https://www.cnblogs.com/nananana/p/8597466.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4656477

我敢打赌!这绝对是10月整理的最全的《高频Java面试题集合》

核能气质少年 提交于 2020-10-14 11:51:25
周末,天气放晴,玩的还挺开心, 过后,我像往常一样坐在窗台,看着电脑“发呆”,就不给大家分享技术干货了。 给大家整理一份面试清单总结吧, 都是一些基础的题, 但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~当复习期末考吧。 花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题! 面试题模块介绍: 一、Java 基础 JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什么作用? java 中的 Math.round(-1.5) 等于多少? String 属于基础的数据类型吗? java 中操作字符串都有哪些类?它们之间有什么区别? String str="i"与 String str=new String("i")一样吗? 如何将字符串反转? String 类的常用方法都有那些? 抽象类必须要有抽象方法吗? 普通类和抽象类有哪些区别? 抽象类能使用 final 修饰吗? 接口和抽象类有什么区别? java 中 IO 流分为几种? BIO、NIO、AIO 有什么区别? Files的常用方法都有哪些? 二、容器 java 容器都有哪些? Collection 和 Collections 有什么区别? List、Set、Map

【mysql】获取某个表所有列名【mybatis】

人盡茶涼 提交于 2020-10-14 05:06:02
方法1:[仅指定表名] select COLUMN_NAME from information_schema.COLUMNS where table_name = ' your-table-name ' ; 方法2:[指定表名+数据库名] select COLUMN_NAME from information_schema.COLUMNS where table_name = ' your-table-name ' and table_schema = ' your-DB-name ' ; ========================那在mybatis中如何调用?==================== mapper.xml: < select id ="findFieldByTableName" parameterType ="java.lang.String" resultType ="java.lang.String" > SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE table_name = #{tableName}; </ select > mapper.java List<String> findFieldByTableName(@Param("tableName") String

mybatis是如何防止SQL注入的(转)

柔情痞子 提交于 2020-10-13 06:40:31
1、首先看一下下面两个sql语句的区别: < select id ="selectByNameAndPassword" parameterType ="java.util.Map" resultMap ="BaseResultMap" > select id, username, password, role from user where username = #{username,jdbcType=VARCHAR} and password = #{password,jdbcType=VARCHAR} </ select > < select id ="selectByNameAndPassword" parameterType ="java.util.Map" resultMap ="BaseResultMap" > select id, username, password, role from user where username = ${username,jdbcType=VARCHAR} and password = ${password,jdbcType=VARCHAR} </ select > mybatis中的#和$的区别: 1、#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。 如:where username=#{username}

1.3 Spring MVC、Redis介绍 -《SSM深入解析与项目实战》

给你一囗甜甜゛ 提交于 2020-10-11 00:29:15
文章目录 声明 1.3 了解Spring MVC 1.4 了解Redis 1.5 Spring、Spring MVC、MyBatis的分工合作 声明 专栏链接: https://chenhx.blog.csdn.net/category_10263372.html 作者:谙忆 1.3 了解Spring MVC Spring MVC是属于表现层的框架,是属于Spring框架Web Flow模块的一部分。 Spring MVC是一个模型-视图-控制(MVC)框架,实现了Model-View-Controller模式,将数据、业务和展示之间进行了分离,这种分离使我们的开发更容易定制。 Spring MVC中模型-视图-控制说明: 模型:模型一般封装数据,通常由基本的Java对象(POJO)组成 视图:主要用来呈现数据模型,通常是生成浏览器可以解析的HTML输出,用户可以浏览查看 控制:也就是控制器,用来处理用户的请求,通过请求构建合适的模型将其传递到视图进行呈现给用户浏览 图1-5 Spring MVC请求流程图 Spring MVC相关流程说明: DispatcherServlet接口,Spring提供的前端控制器,所有的请求都需要它来进行分发给对应的Handler(根据不同请求信息,比如说Url来进行分发)。在前端控制器将请求分发给Controller之前

学Java必会的70个常见Spring面试题(带答案)

时光总嘲笑我的痴心妄想 提交于 2020-10-10 08:34:31
这篇文章主要介绍了70个学Java必会的常见Spring面试题,主要包括Spring、Spring boot、Spring Cloud、Spring MVC、MongoDB、MyBatis、微服务实战,Spring 全家桶等,感兴趣的朋友可以了解一下! 由于篇幅有限,以下只展示小部分面试题,有需要完整版的朋友可以点一点链接跳转领取: 链接: 点这里!!! 暗号:CSDN Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务