MyBatis執行sql文件語句

Mybatis批量執行SQL文件中的語句(在Spring環境中):

    @Autowired
    private SqlSession sqlSession;


InputStreamReader reader = file2Reader(file);
//批量執行文件中的SQL語句
 batchExecuteSqlFromFile(reader);


/**
     * 文件轉成Reader
     * @param file
     * @return
     */
    private InputStreamReader file2Reader(MultipartFile file)
    {

        InputStreamReader reader = null;
        try
        {
            InputStream inputStream = file.getInputStream();
//            result = IOUtils.toString(inputStream,"UTF-8");
            reader = new InputStreamReader(inputStream, "utf-8");
            logger.info("------------------------------" + reader);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

        return reader;
    }

    /**
     * 獲取當前Mybatis的連接信息
     * @return
     */
    public Connection getConnection()
    {
        Connection conn = null;
        try
        {
            conn = sqlSession.getConfiguration().getEnvironment().getDataSource().getConnection();
            logger.info("===This Connection isClosed ? " + conn.isClosed());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return conn;
    }

    /**
     * 批量更新文件中的SQL
     * @param reader
     */
    private void batchExecuteSqlFromFile(InputStreamReader reader)
    {
        try
        {
            Connection connection = getConnection();
            ScriptRunner scriptRunner = new ScriptRunner(connection);
            scriptRunner.setLogWriter(null);
            scriptRunner.setErrorLogWriter(null);
            scriptRunner.setSendFullScript(true);// true執行所有代碼,否則按行識別代碼
            scriptRunner.setAutoCommit(true);
            scriptRunner.runScript(reader);
            scriptRunner.closeConnection();
            connection.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容