明天有人征询我ScriptRunner的相关题目,我也没研讨过,就百度了一些材料起头写一个小测试demo出来,碰到了一些题目,也处理了一些题目,我们接下来看吧。 实在还可以改成MySQL,大概其他DB,样例今朝是Oracle的demo。 一、pom文件增加引入需要引入oracle以及mybatis的包,具体以下。 <dependency><groupId>com.oracle</groupId> <artifactId>ojdbc8</artifactId> <version>12.2.0.1.0</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> 二、编写测试履行的SQL剧本留意看下面的每条SQL的最初,我写了&&标记,这个是为了针对ScriptRunner的,&&标记暗示每条SQL的竣事,留意不能用分号,由于ScriptRunner也支持declare剧本和存储进程,这时辰就会出现紊乱了,是以每一条SQL完成要用分歧于分号的标记来区分,是以挑选了&&。 剧本我我们别离测试了,删除表,建立表,插入表数据,查询表数据,以及Declare语句块,并将成果插入到履行成果的表中,以便存储剧本的履行成果。 drop table test_script_runer&&drop table test_script_runer_result&& create table test_script_runer (id number(22,0) not null, num number(22,0) not null)&& create table test_script_runer_result (count number(22,0) not null)&& insert into TEST_SCRIPT_RUNER values (1,2)&& insert into TEST_SCRIPT_RUNER values (2,3)&& insert into TEST_SCRIPT_RUNER values (3,3)&& insert into TEST_SCRIPT_RUNER values (4,3)&& insert into TEST_SCRIPT_RUNER values (5,3)&& insert into TEST_SCRIPT_RUNER values (6,3)&& insert into TEST_SCRIPT_RUNER values (7,3)&& SELECT id||','||num FROM TEST_SCRIPT_RUNER&& declare vn_count number; begin SELECT count(1) into vn_count FROM TEST_SCRIPT_RUNER; insert into test_script_runer_result values (vn_count); end;&& 三、java实现新增TestScriptRunner.java,留意其中的scriptRunner.setDelimiter("&&")这一句,就是与上面的SQL中的&&标记对应的,你还可以变动成其他的,别的假如点窜成分号的话,就不可以在sql文件中写存储进程之类的了,只能写SQL。 package com.buxuesong.account;import org.apache.ibatis.io.Resources; import org.apache.ibatis.jdbc.ScriptRunner; import org.springframework.boot.CommandLineRunner; import java.io.*; import java.nio.charset.Charset; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class TestScriptRunner implements CommandLineRunner { public static void main(String[] args) throws Exception { TestScriptRunner test = new TestScriptRunner(); test.run(""); } @Override public void run(String... args) throws Exception { try { Connection conn = getConnection(); ScriptRunner scriptRunner = new ScriptRunner(conn); // 设备字符集,否则中文乱码插入毛病 Resources.setCharset(Charset.forName("UTF-8")); scriptRunner.setEscapeProcessing(false); scriptRunner.setRemoveCRs(true); scriptRunner.setSendFullScript(false); scriptRunner.setAutoCommit(true); // 分隔符,还未考证具体功用 scriptRunner.setFullLineDelimiter(false); // 每条号令间的分隔符,留意这个不倡议用分号分隔 // 由于SQL剧本中可以写存储进程,中心存在分号,致使存储进程履行失利 scriptRunner.setDelimiter("&&"); // 从class目录下间接读取 List<String> files = getFiles("/Users/XuesongBu/Documents/NoSQLBooster/"); for (String file : files) { InputStream inputStream = new FileInputStream(new File(file)); Reader reader = new InputStreamReader(inputStream, "utf-8"); scriptRunner.runScript(reader); } scriptRunner.closeConnection(); conn.close(); System.out.println("sql剧本履行终了"); } catch (Exception e) { System.out.println("sql剧本履行发生异常"); e.printStackTrace(); } } // 获得某个目录下一切间接下级文件,不包括目录下的子目录的下的文件,所以不用递归获得 public List<String> getFiles(String path) { List<String> files = new ArrayList<String>(); File file = new File(path); File[] tempList = file.listFiles(); for (int i = 0; i < tempList.length; i++) { if (tempList[i].isFile() && tempList[i].getName().endsWith("sql")) { files.add(tempList[i].toString()); } } return files; } // 获得数据库Connection private Connection getConnection() throws ClassNotFoundException, SQLException { Class.forName("oracle.jdbc.OracleDriver"); //需要点窜成你的数据库url,以及账号密码 return DriverManager.getConnection( "ORACLE_URL", "USER_NAME", "PASSWORD"); } } 四、测试成果drop table test_script_runerdrop table test_script_runer_result create table test_script_runer (id number(22,0) not null, num number(22,0) not null) create table test_script_runer_result (count number(22,0) not null) insert into TEST_SCRIPT_RUNER values (1,2) insert into TEST_SCRIPT_RUNER values (2,3) insert into TEST_SCRIPT_RUNER values (3,3) insert into TEST_SCRIPT_RUNER values (4,3) insert into TEST_SCRIPT_RUNER values (5,3) insert into TEST_SCRIPT_RUNER values (6,3) insert into TEST_SCRIPT_RUNER values (7,3) SELECT id||','||num FROM TEST_SCRIPT_RUNER ID||','||NUM 1,2 2,3 3,3 4,3 5,3 6,3 7,3 declare vn_count number; begin SELECT count(1) into vn_count FROM TEST_SCRIPT_RUNER; insert into test_script_runer_result values (vn_count); end; sql剧本履行终了 Process finished with exit code 0 五、总结以上就是我们常用ScriptRunner的利用方式,比力简单,中心需要留意的每一行SQL结束后的分隔符,依照我上面的设置即可实现。 谢列位的阅读,感谢您动脱手指导击下{\color{red}{附和/喜好}},万分感激列位。别的以下是我之前写过的文章,感爱好的可以点进去继续阅读。 别的假如感觉不错,可以扫码进入我的小法式来延续关注我总结的各类口试题调集。 历史文章ScriptRunner履行Oracle SQL剧本 SpringBoot从入门到精通(一)搭建SpringBoot项目 SpringBoot从入门到精通(二)SpringBoot办事根基设置 SpringBoot从入门到精通(三)SpringBoot常见Rest接口 SpringBoot从入门到精通(四)SpringBoot接口权限控制 SpringBoot从入门到精通(五)SpringBoot毗连数据库 SpringBoot从入门到精通(六)SpringBoot考证validation SpringBoot从入门到精通(七)SpringBoot集成MyBatis SpringBoot从入门到精通(八)SpringBoot集成JPA SpringBoot从入门到精通(九)SpringBoot集成RestTemplate请求接口 SpringBoot从入门到精通(十)SpringBoot集成ehcache内存缓存 SpringBoot集成Logback碰到的题目 SpringBoot根本之Spring Actuator SpringBoot根本之Spring Expression Language(Spring表达说话SpEL) SpringBoot根本之Spring Data Jpa SpringBoot根本之AOP&AspectJ SpringBoot根本之JDBCTemplate Spring Cloud根本之Discovery Service办事发现简单搭建 Spring Cloud根本之Intelligent Routing智能路由 Spring Cloud根本之Config Server设置中心简单搭建 Spring Cloud根本之Load Balancing负载平衡 Spring Cloud根本之Hystrix熔断器 |
小编在之前就介绍过很多油猴里的神器插件,这里给大家总结几款经典中的经典。01Usersc
shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统
作者:厚昌学院特聘讲师,厚昌学院顾问团队核心成员,从事互联网行业从事互联网行业8
前言「油猴脚本」是一段脚本代码,通过它可以让浏览器实现各种各样的扩展功能,和浏览
shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成
关注扩展迷、喜欢折腾电脑的小伙伴们,应该都对各种各样的浏览器插件不陌生了。浏览器
Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome,
油猴脚本管理器的超详细下载安装使用教程——新手必看油猴可以帮你干什么:全网VIP视
参考文章和视频:将iPad作为Mac Mini主屏幕的实现方法视频:无屏自动启动随航 iPad作为M
在运营短视频时,你有没有遇到过这样的问题:1、拍了一半发现拍摄场景不行;2、拍摄过
我们先看一下这个脚本的下载效果。我是100M的宽带,这直接能飙到20MB/s,所以下载速度
写脚本?对于没有视频背景的朋友来说可能就会有疑问,脚本是什么?不应该是电影,电视
本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:Stark-C大家好,我是Stark-
初次见面,大家好。相信熟悉浏览器的都知道,尤其是大名鼎鼎的Chrome浏览器,丰富的
从历史上看,shell一直是类Unix系统的原生命令行解释器。多年来,它已被证明是Unix的
有人说,网红行业的现状是江山代有才人出,各领风骚“好几天”。的确,即便是行业顶流
最近115调整了接口,导致115转存助手ui优化版3.8.1版本无法转存或获取SHA1。有大神在
根据第49次《中国互联网络发展状况统计报告》数据,截至2022年12月,我国网络视频(含
Shell脚本编程难,难于上青天!这话不假,尤其很多程序员新人,学了几个月Shell脚本写
在上期我们做了个形象的比喻,把短视频制作比喻成我们造房子,前面我们已经带领大家打
声明:本站内容由网友分享或转载自互联网公开发布的内容,如有侵权请反馈到邮箱 1415941@qq.com,我们会在3个工作日内删除,加急删除请添加站长微信:15314649589
Copyright @ 2022-2044 杭州共生网络 www.gongshengyun.cn Powered by Discuz!