package com.sy.ai.context; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import lombok.extern.log4j.Log4j2; import org.apache.ibatis.jdbc.ScriptRunner; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component @Log4j2 public class ApplicationContextHelper implements ApplicationContextAware { // private static ApplicationContext context; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { try { javax.sql.DataSource dataSource = (javax.sql.DataSource) applicationContext.getBean("dataSource"); java.sql.Connection connection = dataSource.getConnection(); Statement st = connection.createStatement(); String sql = "select count(*) from pg_tables where schemaname = 'public';"; ResultSet rs = st.executeQuery(sql); if (rs.next()) { if (rs.getInt(1) == 0) { log.info("database not inited; then init database"); ScriptRunner runner = new ScriptRunner(connection); runner.setStopOnError(true); log.info(System.getProperty("user.dir")); try { runner.runScript(new InputStreamReader( this.getClass().getResourceAsStream("/sql/public.sql"), "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } connection.commit(); connection.close(); log.info("execute sql file success"); } else { log.info("table ip_camera exists"); } } connection.close(); } catch (SQLException e1) { e1.printStackTrace(); // System.exit(0); } } }