Springboot接口简单实现生成MySQL插入语句
Springboot接口简单实现调用接口生成MySQL插入语句
在实际测试中,有这样一个需求场景,比如:在性能压力测试中,可能需要我们事先插入数据库中一些相关联的数据。
我们在实际测试中,遇到问题,需要事先在数据库中创建10000家门店,存在shop表中。关键字段(门店的编号6位数)。
分析:两种具体实现方案。
一、利用MySQL函数功能随机生成<SELECT FLOOR(+ RAND() * 1000000)>,最后编写insert语句。但是效率低下。
二、使用springboot编写接口实现,并自动生成insert脚本保存本地。
本次实现以springboot接口实现此次目的:
开发环境
开发工具IDEA
JDK 1.8
新建springboot项目
1、新建project


2、填写springbootDemo
直到填写finish完成。
3、pom.xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springbootDemo</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<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> <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.14</version>
</dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
4、打开工程,看到main里面有默认启动类。
@RestController
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run
(DemoApplication.class, args);
} }
编写接口实现类
* 分析:
* inpuid: uuid
* sotreId=commonCode 以8开头后面五位随机
* createDatetime:当前时间
* create_by: admin
* is_recharge_consumption:1
* updateDatetime:当前时间
* update_by:admin
* sync_date:null
* channel_key:123456
* chainName: XX
* state:0
* shopCode 以8开头后面五位随机
@RequestMapping("/generateSql")
public static String insert(@RequestParam(required = false) int size) throws IOException {
// 开时时间
Long begin = new Date().getTime();
log.info("begin:{}",begin);
for (int i = 0; i <size ; i++) {
StringBuffer addSql = new StringBuffer();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
addSql.append("INSERT INTO"
+ " t_shop"
+ "(`inputId`, `storeId`, `storeType`, `initialsName`, `storeName`, `ipAddress`, `portEP`, `ipAddressEP`, `fixedTelephone`, `mobile`, `contactPerson`, `email`, `address`, `registrationNo`, `createDatetime`, `create_by`, `is_recharge_consumption`, `updateDatetime`, `update_by`, `sync_date`, `channel_key`, `chainName`, `state`, `commonCode`, `areaCode`, `registNumberEP`, `softName`, `busiNature`, `brand`, `floor`, `usageArea`, `computerNum`, `profit_rate`)");
addSql.append("values" + "(");
addSql.append("'"+UUID.randomUUID().toString().replace("-", "") + "',");
//生成commoncode storeid
String newStoreId;
double a = (Math.random()+1)*1000;
int sotreId = Integer.parseInt(String.valueOf(a).substring(0,4));
newStoreId = "'8" + String.valueOf(sotreId) + "'";
addSql.append(newStoreId + ",");
// String empty = "".join("'", Collections.nCopies(12,"',"));
String empty = "'',";
addSql.append(empty);
addSql.append(empty);
addSql.append(newStoreId + ",");
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
Date date = new Date();
SimpleDateFormat sdf1 = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String createTime = sdf1.format(date);
addSql.append("'"+createTime + "',");
addSql.append("'admin',");
addSql.append("'1',");
addSql.append("'"+createTime + "',");
addSql.append("'admin',");
addSql.append(NULL + ",");
addSql.append("'123456',");
addSql.append("'XX',");
addSql.append("'0',");
addSql.append(newStoreId + ",");
addSql.append(empty);
addSql.append("'201805093512',");
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
addSql.append(empty);
addSql.append(NULL + ",");
addSql.append(NULL + ",");
addSql.append(NULL);
addSql.append(");");
String path = "D:\\sqlYpay.txt";
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path,true)));
out.write(addSql+"\r\n");
System.out.println(addSql);
out.close();
}
// System.out.println(addSql);
// 结束时间
Long end = new Date().getTime();
log.info("end:{}",end);
log.info("耗时:{}",end-begin);
// 耗时
System.out.println("cast : " + (end - begin) / 1000 + " s");
return "生成SQL执行语句成功,一共生成了:>>>>>>" + size;
}
启动主程序,调用接口

SQL语句生成执行成功,查看文件夹生成文件。执行即可。
Springboot接口简单实现生成MySQL插入语句的更多相关文章
- 快速将一个表的数据生成SQL插入语句
将一个表中的数据生成SQL插入语句,方便系统快速初始化,在数据库中执行创建以下过程就可以了. ) Drop Procedure GenerateData go CREATE PROCEDURE Gen ...
- mysql 插入语句
mysql 插入语句 什么时候用单引号,什么时候不用? 1.先创建一个表 create table user(username varchar(255),age int,marry boolean,b ...
- 生成大量插入语句,并将语句写入txt文件中
import java.io.*; /** * Created by czz on 2019/9/23. */ public class TTest { /** * 生成大量插入语句,并将语句写入tx ...
- 比较两个文件不同以及生成SQL插入语句
Tips 做一个终身学习的人! 日拱一卒,功不唐捐. 今天有个小小的需求,具体需求是这样的: 有两个文本文件,每个文件都有一些字符串文本: 比较第一个文件中,在第二个文件中,不存在的字符串文本: 把这 ...
- MySQL插入语句解析
1.INSERT INTO 最常用简单的插入语句,可以有以下两种用法 1> INSERT INTO tb_user(id, name, age) VALUES (100022, 'Tom', ...
- Python 生成MYSQL inser语句
背景: 一般来说,navicat生成的insert已经够用了 如果说一张表有2,30个字段,每个字段还得一一对上,其实是很难的.所以抽空写了个小程序.用它完全不用担心字段对不上了.因为没有时间,需要手 ...
- Mysql插入语句.txt
INSERT INTO 目标表 SELECT * FROM 来源表;比如要将 articles 表插入到 newArticles 表中,则是:INSERT INTO newArticles SELEC ...
- Android之网络编程利用PHP操作MySql插入数据(四)
因为最近在更新我的项目,就想着把自己在项目中用到的一些的简单的与网络交互的方法总结一下,所以最近Android网络编程方面的博文会比较多一些,我尽量以最简单的方法给大家分享,让大家明白易懂.如果有什么 ...
- 简单的多表插入(oracle)
简单的多表插入语句: insert all into 表1(字段1,2...) values(值1,值2......) into 表2(字段1,2...)) values(值1,值2......) s ...
随机推荐
- Django基础学习一
Django需要安装Django和jinja2,所以在开始学习之前,要先按照Django模块和jinja2模块,Django默认的数据库是SQLite,所以建议大家在学习之前需要先安装SQLite 一 ...
- CHANGE DETECTION IN ANGULAR 2
In this article I will talk in depth about the Angular 2 change detection system. HIGH-LEVEL OVERVIE ...
- word生成包含echarts图形使用phantomjs,支持word2003,2007
代码具体地址在我的github上 :https://github.com/HaoTwoDonkey/QuickOutPutWord 写得不好,欢迎提出问题 下面说几个phantomjs使用过程中遇到的 ...
- Jmeter Cookie管理器 获取JSESSIONID
1.打开jmeter.抓包添加Web请求后,添加Cookie管理器.直接添加就行.值要不要都一样 添加值:${COOKIE_JSESSIONID 域:${server} 2.点击载入到当前脚本 3.到 ...
- Alpha冲刺 - (6/10)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 基于ssm框架的前后端交互测试,结合 ...
- type="submit" 和type="button"
今天,小菜鸟又遇到一个问题,当不小心在页面输入框回车一下,结果莫名的页面发出了一个请求. 把问题定位在一个button上,代码是这样写的<button class="btn btn-d ...
- eclipse启动tomcat出现内存溢出错误 java.lang.OutOfMemoryError: PermGen space
发布工程后,启动tomcat出现如下内存溢出错误: java.lang.OutOfMemoryError: PermGen space ... java.lang.OutOfMemoryError: ...
- Java反射API研究(3)——java.lang.Class<T>
对于反射来说,Class是核心,任何反射的对象都需要通过Class来获得. Class 类的实例表示正在运行的 Java 应用程序中的类和接口.枚举是一种类,注释是一种接口.每个数组属于被映射为 Cl ...
- [翻译] Writing Property Editors 编写属性编辑器
Writing Property Editors 编写属性编辑器 When you select a component in the designer its properties are di ...
- cloudera search环境搭建搭建-solrcloud
转载:http://blog.csdn.net/xiao_jun_0820/article/details/40539291 本文基于Cloudera Manager5.0.0,所有服务基于CDH5. ...