1.新建一个springBoot项目:

2.pom.xml中添加如下依赖:

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Junit依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

3.配置文件:

server.port=11091
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dxy?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

4.实体类:

/*** 用户实体类*/
@Data
public class User {private Integer id; // ID,数据库自增private String name; //  姓名private Integer gender; // 性别private String phone; // 手机号}

5.测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@EnableAutoConfiguration
public class UserInnoDBBatchInsertTest {@AutowiredJdbcTemplate jdbcTemplate;List<User> list;private static final int USER_COUNT = 1000000; // 数量过大可能导致内存溢出,多运行几次@Testpublic void testInsert() {long start = System.currentTimeMillis();list = new ArrayList<>();for (int i=1; i< USER_COUNT+1; i++){User user = new User();user.setId(i);user.setName(new NameUtil().getRandomName(i));user.setGender(((int)(10 * Math.random())) % 2  );String phone = getTel();user.setPhone(phone);list.add(user);}save(list);long end = System.currentTimeMillis();System.out.println("批量插入"+USER_COUNT+"条用户数据完毕,总耗时:" + (end - start) + " 毫秒");}/*** 必须要在数据库连接url加上 &rewriteBatchedStatements=true 来开启批处理,否则还是一条一条写入的* 检查IP地址* @param list*/public void save(List<User> list) {final List<User> tempList = list;String sql = "insert into user_innodb(id, name, gender, phone) "+ "values(?, ?, ?, ?)";jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {public void setValues(PreparedStatement ps, int i) throws SQLException {Integer id = tempList.get(i).getId();String name =  tempList.get(i).getName();Integer gender = tempList.get(i).getGender();String phone = tempList.get(i).getPhone();ps.setInt(1, id);ps.setString(2, name);ps.setInt(3, gender);ps.setString(4, phone);}public int getBatchSize() {return tempList.size();}});}public static int getNum(int start,int end) {return (int)(Math.random()*(end-start+1)+start);}private static String[] telFirst="181,185,136,137,138,179,150,151,152,157,158,159,130,131,132,155,156,199,153,189,166".split(",");private static String getTel() {int index=getNum(0,telFirst.length-1);String first=telFirst[index];String second=String.valueOf(getNum(1,888)+10000).substring(1);String third=String.valueOf(getNum(1,9100)+10000).substring(1);return first+second+third;}class NameUtil {/*** 随机生成一个中文姓名** @return*/public String getRandomName(int i) {Random random = new Random();/* 598 百家姓 *//*String[] Surname= {"赵","钱","孙","李","周","吴","郑","王","冯","陈","褚","卫","蒋","沈","韩","杨","朱","秦","尤","许","何","吕","施","张","孔","曹","严","华","金","魏","陶","姜","戚","谢","邹","喻","柏","水","窦","章","云","苏","潘","葛","奚","范","彭","郎","鲁","韦","昌","马","苗","凤","花","方","俞","任","袁","柳","酆","鲍","史","唐","费","廉","岑","薛","雷","贺","倪","汤","滕","殷","罗","毕","郝","邬","安","常","乐","于","时","傅","皮","卞","齐","康","伍","余","元","卜","顾","孟","平","黄","和","穆","萧","尹","姚","邵","湛","汪","祁","毛","禹","狄","米","贝","明","臧","计","伏","成","戴","谈","宋","茅","庞","熊","纪","舒","屈","项","祝","董","梁","杜","阮","蓝","闵","席","季","麻","强","贾","路","娄","危","江","童","颜","郭","梅","盛","林","刁","钟","徐","邱","骆","高","夏","蔡","田","樊","胡","凌","霍","虞","万","支","柯","昝","管","卢","莫","经","房","裘","缪","干","解","应","宗","丁","宣","贲","邓","郁","单","杭","洪","包","诸","左","石","崔","吉","钮","龚","程","嵇","邢","滑","裴","陆","荣","翁","荀","羊","于","惠","甄","曲","家","封","芮","羿","储","靳","汲","邴","糜","松","井","段","富","巫","乌","焦","巴","弓","牧","隗","山","谷","车","侯","宓","蓬","全","郗","班","仰","秋","仲","伊","宫","宁","仇","栾","暴","甘","钭","厉","戎","祖","武","符","刘","景","詹","束","龙","叶","幸","司","韶","郜","黎","蓟","溥","印","宿","白","怀","蒲","邰","从","鄂","索","咸","籍","赖","卓","蔺","屠","蒙","池","乔","阴","郁","胥","能","苍","双","闻","莘","党","翟","谭","贡","劳","逄","姬","申","扶","堵","冉","宰","郦","雍","却","璩","桑","桂","濮","牛","寿","通","边","扈","燕","冀","浦","尚","农","温","别","庄","晏","柴","瞿","阎","充","慕","连","茹","习","宦","艾","鱼","容","向","古","易","慎","戈","廖","庾","终","暨","居","衡","步","都","耿","满","弘","匡","国","文","寇","广","禄","阙","东","欧","殳","沃","利","蔚","越","夔","隆","师","巩","厍","聂","晁","勾","敖","融","冷","訾","辛","阚","那","简","饶","空","曾","毋","沙","乜","养","鞠","须","丰","巢","关","蒯","相","查","后","荆","红","游","郏","竺","权","逯","盖","益","桓","公","仉","督","岳","帅","缑","亢","况","郈","有","琴","归","海","晋","楚","闫","法","汝","鄢","涂","钦","商","牟","佘","佴","伯","赏","墨","哈","谯","篁","年","爱","阳","佟","言","福","南","火","铁","迟","漆","官","冼","真","展","繁","檀","祭","密","敬","揭","舜","楼","疏","冒","浑","挚","胶","随","高","皋","原","种","练","弥","仓","眭","蹇","覃","阿","门","恽","来","綦","召","仪","风","介","巨","木","京","狐","郇","虎","枚","抗","达","杞","苌","折","麦","庆","过","竹","端","鲜","皇","亓","老","是","秘","畅","邝","还","宾","闾","辜","纵","侴","万俟","司马","上官","欧阳","夏侯","诸葛","闻人","东方","赫连","皇甫","羊舌","尉迟","公羊","澹台","公冶","宗正","濮阳","淳于","单于","太叔","申屠","公孙","仲孙","轩辕","令狐","钟离","宇文","长孙","慕容","鲜于","闾丘","司徒","司空","兀官","司寇","南门","呼延","子车","颛孙","端木","巫马","公西","漆雕","车正","壤驷","公良","拓跋","夹谷","宰父","谷梁","段干","百里","东郭","微生","梁丘","左丘","东门","西门","南宫","第五","公仪","公乘","太史","仲长","叔孙","屈突","尔朱","东乡","相里","胡母","司城","张廖","雍门","毋丘","贺兰","綦毋","屋庐","独孤","南郭","北宫","王孙"};*/String[] Surname = {"黄", "郑", "孙", "李", "周", "吴", "刘", "王", "冯", "陈", "柏", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "欧阳", "许"};int index = random.nextInt(Surname.length - 1);String name = "";name = Surname[index]; //获得一个随机的姓氏/* 从常用字中选取一个或两个字作为名 */if (random.nextBoolean()) {name += getChinese() + getChinese();} else {name += getChinese();}return name;}/*** 随机获取一个汉字** @return*/public String getChinese() {String str = null;int highPos, lowPos;Random random = new Random();highPos = (176 + Math.abs(random.nextInt(71)));//区码,0xA0打头,从第16区开始,即0xB0=11*16=176,16~55一级汉字,56~87二级汉字random = new Random();lowPos = 161 + Math.abs(random.nextInt(94));//位码,0xA0打头,范围第1~94列byte[] bArr = new byte[2];bArr[0] = (new Integer(highPos)).byteValue();bArr[1] = (new Integer(lowPos)).byteValue();try {str = new String(bArr, "GB2312");    //区位码组合成汉字} catch (UnsupportedEncodingException e) {e.printStackTrace();}return str;}}}

6.结果:

快速创建100万个用户工具类Mysql相关推荐

  1. 【干货】如果你的推广周期是一年,怎样激活100万目标用户

    现在很多做App推广的新人或者刚接手一个App的推广项目,都会要求让写一个推广计划和目标,这个目标的设定要和你的推广周期相符合,比如你的推广周期是一年,你就要写一年内的推广目标,具体看设定的推广周期是 ...

  2. 使用SQL编程创建100万条数据测试索引

    SQL编程创建100万条数据测试索引 CREATE TABLE `app_user`( `id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT, `name ...

  3. Android快速开发不可或缺的11个工具类(下载)

    Android快速开发不可或缺的11个工具类(下载) 源码简介 Android快速开发不可或缺的11个辅助类,其中10个来自张鸿洋的博客,1个是我平时积攒的,复制粘贴到你的项目里,添加上包名就可以直接 ...

  4. php 100万数据,关于批量插入数据之我见(100万级别的数据,mysql)

    关于批量插入数据之我见(100万级别的数据,mysql) ~~~ $dsn = 'mysql:host=localhost;dbname=test'; $db = new PDO($dsn,'root ...

  5. 【转】 Android快速开发系列 10个常用工具类 -- 不错

    原文网址:http://blog.csdn.net/lmj623565791/article/details/38965311 转载请标明出处:http://blog.csdn.net/lmj6235 ...

  6. Android快速开发系列 10个常用工具类

    目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基 ...

  7. 微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)

    文章目录 一.基本介绍 1.概述 2.功能特点 3.使用场景 二.术语概述 基础参数说明 DetectAuth(实名核身鉴权) GetDetectInfo(获取实名核身结果信息) 三.基本接口说明使用 ...

  8. 人脸核身 微信h5_微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)...

    这里咱们使用腾讯云的人脸核身来给你们作一个基础的介绍和使用java 1.基本介绍 1.概述 人脸核身:通常是对一组对用户身份信息真实性进行验证审核的服务套件提供各种认证功能模块,包含证件 OCR 识别 ...

  9. mysql怎么插入10w测试数据_mysql快速插入100万测试数据

    向数据库添加100W条测试数据,直接在普通表中添加速度太慢,可以使用内存表添加,然后将内存表数据复制到普通表. 创建表 内存表 DROP TABLE IF EXISTS test_memory; CR ...

最新文章

  1. 轻量级NuGet—BaGet
  2. Serilog 自定义 Enricher 来增加记录的信息
  3. python的各种推导式(列表推导式、字典推导式、集合推导式)
  4. 广成 USBCAN-II Pro V502 linux下升级经验
  5. php通过数组存取mysql查询语句的返回值
  6. 怎样理解“道不同,不相为谋”这句话呢。。。
  7. Mysql 中 show full processlist
  8. 【转】SQL SERVER2005版本介绍
  9. 【路径规划】基于matlab遗传算法公交排班系统分析【含Matlab源码 220期】
  10. html 字体图标大小,CSS ICONFONT 基线和大小问题
  11. 诺基亚7plus支持html,【诺基亚7Plus评测】诺基亚7Plus评测:三蔡司镜头“全面”来袭(全文)_诺基亚 7 Plus(4GB RAM/全网通)_手机评测-中关村在线...
  12. Format oracle 用法,oracle sqlplus中column格式化命令之heading用法
  13. 单电机板机模型,f22
  14. 中英文代码对比之ZLOGO 4 LOGO
  15. php爆路径方法收集
  16. 冬天吃柿子养颜防衰老
  17. 使用Python生成数据
  18. Android冒险之旅-14-RecycleView(线性,网格,瀑布流)
  19. 全新MN梦奈宝塔主机系统V1.5版本源码
  20. srand和rand函数使用

热门文章

  1. ABAP 选择屏幕标题和ALV标题的修改
  2. excel将一个工作表根据条件拆分成多个工作簿
  3. 高中学业水平考试实验考查计算机测评,高二年级生物学业水平考试实验操作考查指导.doc...
  4. 软件构造Lab1实验总结
  5. 教你如何用计算机撩妹,撩妹必学!怎么用 iPhone 计算器拿到妹子的手机号?...
  6. 2017双十一:同样的促销狂欢,不一样国美新味道
  7. 【KDD 2019】Is a Single Vector Enough Exploring Node Polysemy for Network Embedding
  8. Element表格样式背景色、边框、斑马条纹、颜色、文字...
  9. php相机拍照太大,光比太大,拍照片不是曝光不足就是过曝,一招帮你解决
  10. 提取图片中的文字或者表格,识别车牌,驾驶证,营业执照,发票的工具