<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<groupId>com.vaadin.external.google</groupId>
<artifactId>android-json</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.scudata.esproc</groupId>
<artifactId>esproc</artifactId>
<version>20220601</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.8</version>
</dependency>
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>60.3</version>
</dependency>
<dependency>
<groupId>org.lucee</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.6.RELEASE</version>
</plugin>
</plugins>
</build>
这个版本不依赖raqsoftConfig.xml配置文件,数据库需要我们手动自己添加进去
application.yml
server:
port: 9546
spring:
datasource:
ds1:
driverclassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.118.129:3306/voidme?useCursorFetch=true&useSSL=false
username: root
password: root
dbType: MYSQL
ds2:
driverclassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.118.129:3306/sso?useCursorFetch=true&useSSL=false
username: root
password: root
dbType: MYSQL
JdbcConfig
@Configuration
public class JdbcConfig {
@Bean("local_mysql_1")
@ConfigurationProperties("spring.datasource.ds1")
public DataSource datasourceMysql1() {
return DruidDataSourceBuilder.create().build();
}
@Bean("local_mysql_2")
@ConfigurationProperties("spring.datasource.ds2")
public DataSource datasourceMysql2() {
return DruidDataSourceBuilder.create().build();
}
}
AppInitListener
@Component
public class AppInitListener extends ApplicationObjectSupport implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
Map<String, DataSource> beansOfType = getApplicationContext().getBeansOfType(DataSource.class);
for (Map.Entry<String, DataSource> stringDataSourceEntry : beansOfType.entrySet()) {
DruidDataSource value = (DruidDataSource)stringDataSourceEntry.getValue();
int dbType = DBTypes.getDBType(value.getDbType());
SpringDBSessionFactory.create(stringDataSourceEntry.getKey(), dbType);
}
}
}
SplAppliction
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, })
@ComponentScan({"com.scudata.*","com.splparer.*"})
public class SplAppliction {
public static void main(String[] args) {
SpringApplication.run(SplAppliction.class, args);
}
}
SplTest
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SplAppliction.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class SplTest {
@SneakyThrows
@Test
public void contextLoads() {
// FileInputStream fileInputStream=new FileInputStream(new File("C:\\Users\\huanmin\\Desktop\\spl\\p.spl"));
// PgmCellSet pgmCellSet = AppUtil.readSPL(fileInputStream); //文本文件
// PgmCellSet pgmCellSet = AppUtil.readSPL("C:\\Users\\huanmin\\Desktop\\spl\\p.spl"); //文本文件
PgmCellSet pgmCellSet = AppUtil.readCellSet("C:\\Users\\huanmin\\Desktop\\spl\\p.dfx"); //dfx, sqlx 二进制文件
Context context = new Context(); //上下文,参数..设置
pgmCellSet.setContext(context);
Object execute = pgmCellSet.execute();
System.out.println(execute);
}
}
p.splx
结果如下:
这个版本支持的功能比较全,直接调用SPL驱动,需要搭配raqsoftConfig.xml配置文件进行
raqsoftConfig.xml 文件可在本地windows客户端中-选项-环境里自行配置配置好后,就会将内容同步到本地安装目录下esProc\config\raqsoftConfig.xml里 更全配置信息
<?xml version="1.0" encoding="UTF-8"?>
<Config Version="3">
<Runtime>
<DBList>
<DB name="local_mysql_1">
<property name="url"
value="jdbc:mysql://192.168.118.129:3306/voidme?useCursorFetch=true&useSSL=false"/>
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="type" value="10"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
<property name="batchSize" value="0"/>
<property name="autoConnect" value="true"/>
<property name="useSchema" value="false"/>
<property name="addTilde" value="false"/>
<property name="needTransContent" value="false"/>
<property name="needTransSentence" value="false"/>
<property name="caseSentence" value="false"/>
</DB>
</DBList>
<Esproc>
<charSet>UTF-8</charSet>
<!-- 配置spl脚本文件寻址路径,可以设置多个路径,以“;”隔开。 spl文件的路径也可以放在应用项目的类路径中,加载文件的顺序高于寻址路径-->
<splPathList>
<splPath>C:\Users\huanmin\Desktop\spl</splPath>
</splPathList>
<dateFormat>yyyy-MM-dd</dateFormat>
<timeFormat>HH:mm:ss</timeFormat>
<dateTimeFormat>yyyy-MM-dd HH:mm:ss</dateTimeFormat>
<mainPath/>
<!-- 临时文件(dfx,txt...)存储路径,可以使用绝对路径,当设置路径为相对路径时,将设置在主路径下,相对路径不能以“/”或“\”开头-->
<tempPath>resources/temp</tempPath>
<bufSize>65536</bufSize>
<localHost/>
<localPort>0</localPort>
<parallelNum/>
<cursorParallelNum/>
<simpleTableBlockSize>1048576</simpleTableBlockSize>
<nullStrings>nan,null,n/a</nullStrings>
<fetchCount/>
<extLibsPath/>
</Esproc>
<Logger>
<!-- <Level>DEBUG</Level>-->
<Level>INFO</Level>
</Logger>
</Runtime>
<JDBC>
<!-- 在JDBC中配置了远程服务器之后,再用Java代码调用JDBC时,执行计算时会优先在本地处理,如果本地无法执行,如找不到数据文件等,才会在远程服务器端执行计算。如果希望将计算交给服务器执行,可以在连接串中添加参数?onlyServer=true
详细说明: http://d.raqsoft.com.cn:6999/esproc/tutorial/jdbcdyycfwq.html
-->
<!-- <Units>-->
<!-- <Unit>106.12.174.220:8281</Unit>-->
<!-- <Unit>127.0.0.1:8281</Unit>-->
<!-- </Units>-->
<!-- 初始化使用的dfx文件,在系统初始化时先执行指定文件-->
<Init>
<!-- <SPL>C:\Users\huanmin\Desktop\spl\init.dfx</SPL>-->
</Init>
</JDBC>
</Config>
application.yml
server:
port: 9546
spring:
datasource:
driverclassName: com.esproc.jdbc.InternalDriver
url: jdbc:esproc:local://
username: root
password: root
minIdle: 5
maxActive: 100
initialSize: 10
JdbcConfig
@Configuration
public class JdbcConfig {
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource datasource() {
return DruidDataSourceBuilder.create().build();
}
}
SplController
@RestController
@RequestMapping("/spl")
public class SplController {
@Autowired
private SplServiceImpl service;
@GetMapping("")
public void execute() {
service.contextLoads();
}
}
SplService
public interface SplService {
public void contextLoads() ;
}
SplServiceImpl
@Component
public class SplServiceImpl implements SplService {
@Autowired
private DataSource dataSource;
@SneakyThrows
@Override
public void contextLoads() {
long l = System.currentTimeMillis();
//获得数据库连接
Connection connection = dataSource.getConnection();
CallableStatement st = connection.prepareCall("call p()");
//执行存储过程
st.execute();
//获取结果集
ResultSet rs = st.getResultSet();
SplUtil.show(rs);
connection.close();
long l1 = System.currentTimeMillis();
System.out.println("======================:"+String.valueOf(l1-l));
}
}
SplUtil
public class SplUtil {
//显示表格值内容
public static void show( ResultSet rs) throws SQLException {
//简单处理结果集,将结果集中的字段名与数据输出
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
for ( int c = 1; c <= colCount;c++) {
String title = rsmd.getColumnName(c);
if( c > 1 ) {
System.out.print("\t");
}
else {
System.out.print("\n");
}
System.out.print(title);
}
while (rs.next()) {
for(int c = 1; c<= colCount; c++) {
if ( c > 1 ) {
System.out.print("\t");
}
else {
System.out.print("\n");
}
Object o = rs.getObject(c);
System.out.print(o);
}
}
System.out.println();
}
}
SplAppliction
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, })
@ComponentScan({"com.scudata.*","com.spl.*"})
public class SplAppliction {
public static void main(String[] args) {
SpringApplication.run(SplAppliction.class, args);
}
}
点赞 -收藏-关注-便于以后复习和收到最新内容有其他问题在评论区讨论-或者私信我-收到会在第一时间回复感谢,配合,希望我的努力对你有帮助^_^
免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://huanmin.blog.csdn.net/article/details/125573412
内容来源于网络,如有侵权,请联系作者删除!