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@SpringBootApplicationpublic 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语句生成执行成功,查看文件夹生成文件。执行即可。

原文地址:https://www.cnblogs.com/hardy-test/p/10577811.html

时间: 2024-11-05 21:34:59

Springboot接口简单实现生成MySQL插入语句的相关文章

mysql 插入语句

什么时候用单引号,什么时候不用? 1.先创建一个表 create table user(username varchar(255),age int,marry boolean,birthday date); [注意,最后一个括号前面不能有逗号,否则出错] 2.插入语句 insert into user values('bluewelkin',20,1,1985-10-10); 失败..因为最后一个日期没有加引号 insert into user(username,age,marry) value

MySQL插入语句解析

1.INSERT INTO 最常用简单的插入语句,可以有以下两种用法 1>  INSERT INTO tb_user(id, name, age) VALUES (100022, 'Tom', 25); // 只给指定的列赋值 2>  INSERT INTO tb_user VALUES (100022, 'Tom', 25); // 必须 给所有列赋值 注: INTO关键字可以省略 2. INSERT INTO  ... SELECT 可以将查询结果插入表中 insert into t2sa

mysql 插入语句报错之一

#添加学生信息INSERT INTO student VALUES('108','曾华','男','1977-09-01','95033'); 在mysql中插入上面一条信息数据,mysql出现下面错误 1 queries executed, 0 success, 1 errors, 0 warnings 查询:insert into teacher values('804','李诚','男','1958-12-02','副教授','计算机系') 错误代码: 1366Incorrect stri

Mysql插入语句.txt

INSERT INTO 目标表 SELECT * FROM 来源表;比如要将 articles 表插入到 newArticles 表中,则是:INSERT INTO newArticles SELECT * FROM articles;如果只希望导入指定字段,可以用这种方法:INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;

SQL Server根据表或视图批量生成插入语句并BCP导出成文本

--声明变量 DECLARE @TableName VARCHAR(100),@RunStr VARCHAR(MAX),@RunRC VARCHAR(MAX),@FinalRun VARCHAR(MAX) --在master库创建数据载体,也可以建立在其他数据库,但一定要是实体表,因为BCP导出不支持临时表 IF OBJECT_ID('master.dbo.tempinsertstr') IS NOT NULL DROP TABLE master.dbo.tempinsertstr CREATE

Mysql 升级到 5.6 后插入语句时间字段报错:Incorrect datetime value: &#39;&#39; for column &#39;createtime&#39;

今天部署服务器项目运行,当遇见有时间数据对象的插入和更新操作的时候,就报错,如下: Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'createtime' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868) at com.mysql.jdbc.My

[lua, mysql] 将多条记录数据组合成一条sql插入语句(for mysql)

-- 演示将多条记录数据组合成一条sql插入语句(for mysql) function getTpl0(tname) -- 获取表各个字段 local t = { tpl_pack = {"packId","itemId","`group`","num","rate","rateType"}, } for k, v in pairs(t) do if tname == k then r

mysql 数据库插入语句之insert into,replace into ,insert ignore

最近才发现mysql的插入语句居然有如此多的用法,这里拿来分享一下. ①关于insert into : insert into table_name values(); insert into table_name (column) values (); insert into table_name values(select (column) from table_name2); 这里的插入只需要注意一点的就是: 如果发生主键冲突,(也就是插入的主键已经在表中存在时),系统报错. ②repla

自动生成SQL查询、删除、更新、插入语句

自动生成sql语句 select 'update  ' || t.table_name || ' a  set ' ||       (select wm_concat('a.' || a.column_name || '=' || Chr(39) || '{' ||                         Abs(Rownum - 1) || '}' || chr(39) || '   --' ||                         a.Comments || Chr(1