Example usage for org.apache.ibatis.session SqlSession getConnection

List of usage examples for org.apache.ibatis.session SqlSession getConnection

Introduction

In this page you can find the example usage for org.apache.ibatis.session SqlSession getConnection.

Prototype

Connection getConnection();

Source Link

Document

Retrieves inner database connection.

Usage

From source file:org.mybatis.cdi.ManagerProducers.java

License:Apache License

private SqlSessionFactory createSessionManagerJTA() throws IOException {
    Reader reader = Resources.getResourceAsReader("org/mybatis/cdi/mybatis-config_jta.xml");
    SqlSessionFactory manager = new SqlSessionFactoryBuilder().build(reader);
    reader.close();//from w w w  .  j  a v a  2  s  . co m

    SqlSession session = manager.openSession();
    Connection conn = session.getConnection();
    reader = Resources.getResourceAsReader("org/mybatis/cdi/CreateDB_JTA.sql");
    ScriptRunner runner = new ScriptRunner(conn);
    runner.setLogWriter(null);
    runner.runScript(reader);
    reader.close();
    session.close();

    return manager;
}

From source file:org.mybatis.guice.session.DbSessionManager.java

License:Apache License

public Connection getConnection() {
    final SqlSession sqlSession = localSqlSession.get();
    if (sqlSession == null)
        throw new SqlSessionException("Error:  Cannot get connection.  No managed session is started.");
    return sqlSession.getConnection();
}

From source file:org.solmix.datax.mybatis.MybatisDataService.java

License:Open Source License

protected DSResponse executeWithDataSource(DataSource dataSource, DSRequest req, OperationType type)
        throws DSCallException {
    SqlSession session = null;
    boolean usedTransaction = false;
    if (req.getDSCall() != null && this.canJoinTransaction(req)) {
        usedTransaction = true;//from   w  ww . j a va2 s  .  com
        DSCall dsc = req.getDSCall();
        TransactionService ts = dsc.getTransactionService();
        Transaction transaction = ts.getResource(dataSource);
        req.setPartsOfTransaction(true);
        // dsc?DataSource
        if (transaction != null) {
            if (transaction instanceof ConnectionWrapperedTransaction) {
                Object wrap = ((ConnectionWrapperedTransaction<?>) transaction).getWrappedTransactionObject();
                if (wrap instanceof SqlSession) {
                    session = (SqlSession) wrap;
                }
            } else if (transaction instanceof ConnectionTransaction) {
                Connection conn = (Connection) transaction.getTransactionObject();
                if (conn != null) {
                    session = sqlSessionFactory.openSession(conn);
                } else {
                    session = sqlSessionFactory.openSession();
                }
                if (session != null && this.canStartTransaction(req, false)) {
                    ts.bindResource(dataSource,
                            new ConnectionWrapperedTransaction<SqlSession>(session, session.getConnection()));
                }
            }
            // dsc?DataSource
        } else {
            if (this.canStartTransaction(req, false)) {
                session = sqlSessionFactory.openSession(false);
                if (session != null) {
                    ts.bindResource(dataSource,
                            new ConnectionWrapperedTransaction<SqlSession>(session, session.getConnection()));
                }
            }
        }

    } else {
        session = sqlSessionFactory.openSession(true);
    }
    try {
        if (DataTools.isFetch(type)) {
            return executeFetch(req, session, dataSource);
        } else if (DataTools.isRemove(type)) {
            return executeRemove(req, session);
        } else if (DataTools.isUpdate(type)) {
            return executeUpdate(req, session);
        } else if (DataTools.isAdd(type)) {
            return executeAdd(req, session);
        } else if (DataTools.isCustom(type)) {
            return executeCustom(req);
        } else {
            return notSupported(req);
        }
    } finally {
        if (!usedTransaction && session != null) {
            session.close();
        }
    }
}

From source file:org.solmix.datax.mybatis.MybatisDataService.java

License:Open Source License

protected List<SqlSessionDepository> makeupSessionInConcurrency(List<RoutingRequest> requests,
        boolean usedTransaction) {
    List<SqlSessionDepository> depos = new ArrayList<SqlSessionDepository>();
    for (RoutingRequest request : requests) {
        DataSource dataSource = request.getDataSource();
        DSRequest req = request.getRequest();

        SqlSession session = null;
        if (usedTransaction) {
            DSCall dsc = req.getDSCall();
            TransactionService ts = dsc.getTransactionService();
            Transaction transaction = ts.getResource(dataSource);
            req.setPartsOfTransaction(true);
            // dsc?DataSource
            if (transaction != null) {
                if (transaction instanceof ConnectionTransaction) {
                    Connection conn = (Connection) transaction.getTransactionObject();
                    if (conn == null) {
                        conn = getConnection(dataSource, false);
                    }/*from w  ww.ja v  a  2 s .co m*/
                    session = sqlSessionFactory.openSession(conn);
                    if (session != null && this.canStartTransaction(req, false)) {
                        ts.bindResource(dataSource, new ConnectionWrapperedTransaction<SqlSession>(session,
                                session.getConnection()));
                    }
                } else if (transaction instanceof ConnectionWrapperedTransaction) {
                    Object wrap = ((ConnectionWrapperedTransaction<?>) transaction)
                            .getWrappedTransactionObject();
                    if (wrap instanceof SqlSession) {
                        session = (SqlSession) wrap;
                    }
                }
                // dsc?DataSource
            } else {
                if (this.canStartTransaction(req, false)) {
                    Connection conn = getConnection(dataSource, false);
                    session = sqlSessionFactory.openSession(conn);
                    if (session != null) {
                        ts.bindResource(dataSource, new ConnectionWrapperedTransaction<SqlSession>(session,
                                session.getConnection()));
                    }
                }
            }

            //?transaction
        } else {
            Connection conn = getConnection(dataSource, true);
            session = sqlSessionFactory.openSession(conn);
        }
        SqlSessionDepository ss = new SqlSessionDepository();
        ss.setRequest(request);
        ss.setUsedTransaction(usedTransaction);
        ss.setSqlSession(session);
        depos.add(ss);
    }
    return depos;
}

From source file:org.sonar.core.measure.MeasureFilterExecutor.java

License:Open Source License

public List<MeasureFilterRow> execute(MeasureFilter filter, MeasureFilterContext context) throws SQLException {
    if (filter.isEmpty()) {
        return Collections.emptyList();
    }//from  w  ww . j  ava2 s.c  om

    List<MeasureFilterRow> rows;
    SqlSession session = null;
    Connection connection = null;
    try {
        session = mybatis.openSession();
        prepareContext(context, filter, session);

        if (isValid(filter, context)) {
            MeasureFilterSql sql = new MeasureFilterSql(database, filter, context);
            context.setSql(sql.sql());
            connection = session.getConnection();
            rows = sql.execute(connection);
        } else {
            rows = Collections.emptyList();
        }
    } finally {
        MyBatis.closeQuietly(session);
        // connection is supposed to be closed by the session
        DatabaseUtils.closeQuietly(connection);
    }

    return rows;
}

From source file:org.sonar.core.persistence.DatabaseMigrator.java

License:Open Source License

/**
 * @return true if the database has been created, false if this database is not supported
 *//*w  w w . j  a  v a2s .  co m*/
public boolean createDatabase() {
    if (!DdlUtils.supportsDialect(database.getDialect().getId())) {
        return false;
    }

    LoggerFactory.getLogger(getClass()).info("Create database");
    SqlSession session = null;
    Connection connection = null;
    try {
        session = myBatis.openSession();
        connection = session.getConnection();
        DdlUtils.createSchema(connection, database.getDialect().getId());
    } finally {
        MyBatis.closeQuietly(session);

        // The connection is probably already closed by session.close()
        // but it's not documented in mybatis javadoc.
        DatabaseUtils.closeQuietly(connection);
    }
    return true;
}

From source file:org.sonar.core.persistence.MyBatisTest.java

License:Open Source License

@Test
public void shouldOpenBatchSession() {
    MyBatis myBatis = new MyBatis(database, logback, queue);
    myBatis.start();//from   w  ww  . j av  a 2s  .  com

    SqlSession session = myBatis.openBatchSession();
    try {
        assertThat(session.getConnection(), notNullValue());
        assertThat(session.getMapper(RuleMapper.class), notNullValue());
    } finally {
        session.close();
    }
}

From source file:org.sonar.db.MyBatisTest.java

License:Open Source License

@Test
public void shouldOpenBatchSession() {
    MyBatis myBatis = new MyBatis(database);
    myBatis.start();/*from  ww  w .  j a va2  s .  c o  m*/

    SqlSession session = myBatis.openSession(false);
    try {
        assertThat(session.getConnection(), notNullValue());
        assertThat(session.getMapper(RuleMapper.class), notNullValue());
    } finally {
        session.close();
    }
}

From source file:org.sonar.server.db.DatabaseMigrator.java

License:Open Source License

/**
 * @return true if the database has been created, false if this database is not supported
 *///from   ww w.  jav  a2s  .com
public boolean createDatabase() {
    if (!DdlUtils.supportsDialect(database.getDialect().getId())) {
        return false;
    }

    LoggerFactory.getLogger(getClass()).info("Create database");
    SqlSession session = null;
    Connection connection = null;
    try {
        session = myBatis.openSession();
        connection = session.getConnection();
        createSchema(connection, database.getDialect().getId());
        return true;
    } finally {
        MyBatis.closeQuietly(session);

        // The connection is probably already closed by session.close()
        // but it's not documented in mybatis javadoc.
        DbUtils.closeQuietly(connection);
    }
}

From source file:org.sonar.server.db.DatabaseMigratorTest.java

License:Open Source License

@Test
public void should_create_schema_on_h2() throws Exception {

    Dialect supportedDialect = new H2();
    when(database.getDialect()).thenReturn(supportedDialect);
    Connection connection = mock(Connection.class);
    SqlSession session = mock(SqlSession.class);
    when(session.getConnection()).thenReturn(connection);
    when(mybatis.openSession()).thenReturn(session);

    DatabaseMigrator databaseMigrator = new DatabaseMigrator(mybatis, database) {
        @Override/*  ww  w. j a v  a 2  s. c om*/
        protected void createSchema(Connection connection, String dialectId) {
        }
    };

    assertThat(databaseMigrator.createDatabase()).isTrue();
}