zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }
  • 相关阅读:
    cookie,请求报文,
    ser,ver
    关于 通知的 死循环,
    这读取的好蛋疼,为什么一写 一读就有问题了,不一致了,
    缓存小姐 挡拆,网络请求 不同步 惹的祸,
    viewdidload ,viewwillappear,
    提示输入 用户名 ,密码,--》转
    前端面试
    npm与cnpm
    vue与node和npm关系
  • 原文地址:https://www.cnblogs.com/ronaldHU/p/15166313.html
Copyright © 2011-2022 走看看