您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

bubuko 2022/1/25 18:57:17 java 字数 6516 阅读 728 来源 http://www.bubuko.com/infolist-5-1.html

package com.sy.ai.context; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.Unsu ...

 

 

 

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);
        }
    }
}

 

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

原文:https://www.cnblogs.com/ronaldHU/p/15166313.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶