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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容