• spring使用mybatis执行SQL脚本,创建和初始化数据库


    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);
            }
        }
    }
  • 相关阅读:
    php数据缓存到文件类设计
    php静态文件缓存示例
    php array_merge和“+”的区别和使用《细说php2》
    kafka环境安装及简单使用(单机版)
    Protobuf的上手使用
    Java8新特性概览
    Mock测试框架(Mockito为例)
    Java序列化与反序列化
    系统/项目环境搭建
    关于Tomcat服务器中的协议及请求过程
  • 原文地址:https://www.cnblogs.com/ronaldHU/p/15166313.html
Copyright © 2020-2023  润新知