-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
419 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/** | ||
* Copyright 2009-2019 the original author or authors. | ||
* <p> | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* <p> | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* <p> | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.apache.ibatis.submitted.foreach_map; | ||
|
||
import java.util.LinkedHashMap; | ||
import java.util.Map; | ||
|
||
public class MapParam { | ||
private Map<Object, Object> map = new LinkedHashMap<>(); | ||
|
||
public Map<Object, Object> getMap() { | ||
return map; | ||
} | ||
|
||
public void setMap(Map<Object, Object> map) { | ||
this.map = map; | ||
} | ||
} |
166 changes: 166 additions & 0 deletions
166
docs/spring/cse434f1b4-8c1e-11ee-8a91-acde48001122.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,166 @@ | ||
/** | ||
* Copyright 2009-2019 the original author or authors. | ||
* <p> | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* <p> | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* <p> | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.apache.ibatis.transaction.jdbc; | ||
|
||
import org.apache.ibatis.logging.Log; | ||
import org.apache.ibatis.logging.LogFactory; | ||
import org.apache.ibatis.session.TransactionIsolationLevel; | ||
import org.apache.ibatis.transaction.Transaction; | ||
import org.apache.ibatis.transaction.TransactionException; | ||
|
||
import javax.sql.DataSource; | ||
import java.sql.Connection; | ||
import java.sql.SQLException; | ||
|
||
/** | ||
* <transactionManager type="JDBC"/> | ||
* <p> | ||
* <p> | ||
* <p>这部分的内容是数据JDBC操作</p> | ||
* {@link Transaction} that makes use of the JDBC commit and rollback facilities directly. | ||
* It relies on the connection retrieved from the dataSource to manage the scope of the transaction. | ||
* Delays connection retrieval until getConnection() is called. | ||
* Ignores commit or rollback requests when autocommit is on. | ||
* | ||
* @author Clinton Begin | ||
* @see JdbcTransactionFactory | ||
*/ | ||
public class JdbcTransaction implements Transaction { | ||
|
||
private static final Log log = LogFactory.getLog(JdbcTransaction.class); | ||
|
||
protected Connection connection; | ||
protected DataSource dataSource; | ||
protected TransactionIsolationLevel level; | ||
protected boolean autoCommit; | ||
|
||
public JdbcTransaction(DataSource ds, TransactionIsolationLevel desiredLevel, boolean desiredAutoCommit) { | ||
dataSource = ds; | ||
level = desiredLevel; | ||
autoCommit = desiredAutoCommit; | ||
} | ||
|
||
public JdbcTransaction(Connection connection) { | ||
this.connection = connection; | ||
} | ||
|
||
/** | ||
* 获取连接对象 | ||
* @return | ||
* @throws SQLException | ||
*/ | ||
@Override | ||
public Connection getConnection() throws SQLException { | ||
if (connection == null) { | ||
openConnection(); | ||
} | ||
return connection; | ||
} | ||
|
||
/** | ||
* 提交 | ||
* @throws SQLException | ||
*/ | ||
@Override | ||
public void commit() throws SQLException { | ||
if (connection != null && !connection.getAutoCommit()) { | ||
if (log.isDebugEnabled()) { | ||
log.debug("Committing JDBC Connection [" + connection + "]"); | ||
} | ||
connection.commit(); | ||
} | ||
} | ||
|
||
/** | ||
* 回滚 | ||
* @throws SQLException | ||
*/ | ||
@Override | ||
public void rollback() throws SQLException { | ||
if (connection != null && !connection.getAutoCommit()) { | ||
if (log.isDebugEnabled()) { | ||
log.debug("Rolling back JDBC Connection [" + connection + "]"); | ||
} | ||
connection.rollback(); | ||
} | ||
} | ||
|
||
@Override | ||
public void close() throws SQLException { | ||
if (connection != null) { | ||
resetAutoCommit(); | ||
if (log.isDebugEnabled()) { | ||
log.debug("Closing JDBC Connection [" + connection + "]"); | ||
} | ||
connection.close(); | ||
} | ||
} | ||
|
||
protected void setDesiredAutoCommit(boolean desiredAutoCommit) { | ||
try { | ||
if (connection.getAutoCommit() != desiredAutoCommit) { | ||
if (log.isDebugEnabled()) { | ||
log.debug("Setting autocommit to " + desiredAutoCommit + " on JDBC Connection [" + connection + "]"); | ||
} | ||
connection.setAutoCommit(desiredAutoCommit); | ||
} | ||
} catch (SQLException e) { | ||
// Only a very poorly implemented driver would fail here, | ||
// and there's not much we can do about that. | ||
throw new TransactionException("Error configuring AutoCommit. " | ||
+ "Your driver may not support getAutoCommit() or setAutoCommit(). " | ||
+ "Requested setting: " + desiredAutoCommit + ". Cause: " + e, e); | ||
} | ||
} | ||
|
||
protected void resetAutoCommit() { | ||
try { | ||
if (!connection.getAutoCommit()) { | ||
// MyBatis does not call commit/rollback on a connection if just selects were performed. | ||
// Some databases start transactions with select statements | ||
// and they mandate a commit/rollback before closing the connection. | ||
// A workaround is setting the autocommit to true before closing the connection. | ||
// Sybase throws an exception here. | ||
if (log.isDebugEnabled()) { | ||
log.debug("Resetting autocommit to true on JDBC Connection [" + connection + "]"); | ||
} | ||
connection.setAutoCommit(true); | ||
} | ||
} catch (SQLException e) { | ||
if (log.isDebugEnabled()) { | ||
log.debug("Error resetting autocommit to true " | ||
+ "before closing the connection. Cause: " + e); | ||
} | ||
} | ||
} | ||
|
||
protected void openConnection() throws SQLException { | ||
if (log.isDebugEnabled()) { | ||
log.debug("Opening JDBC Connection"); | ||
} | ||
connection = dataSource.getConnection(); | ||
if (level != null) { | ||
connection.setTransactionIsolation(level.getLevel()); | ||
} | ||
setDesiredAutoCommit(autoCommit); | ||
} | ||
|
||
@Override | ||
public Integer getTimeout() throws SQLException { | ||
return null; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
/** | ||
* Copyright 2009-2019 the original author or authors. | ||
* <p> | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* <p> | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* <p> | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.apache.ibatis.reflection; | ||
|
||
import org.junit.jupiter.api.Test; | ||
|
||
import java.lang.reflect.InvocationTargetException; | ||
import java.lang.reflect.UndeclaredThrowableException; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
|
||
class ExceptionUtilTest { | ||
|
||
@Test | ||
void shouldUnwrapThrowable() { | ||
Exception exception = new Exception(); | ||
assertEquals(exception, ExceptionUtil.unwrapThrowable(exception)); | ||
assertEquals(exception, ExceptionUtil.unwrapThrowable(new InvocationTargetException(exception, "test"))); | ||
assertEquals(exception, ExceptionUtil.unwrapThrowable(new UndeclaredThrowableException(exception, "test"))); | ||
assertEquals(exception, ExceptionUtil.unwrapThrowable(new InvocationTargetException(new InvocationTargetException(exception, "test"), "test"))); | ||
assertEquals(exception, ExceptionUtil.unwrapThrowable(new InvocationTargetException(new UndeclaredThrowableException(exception, "test"), "test"))); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/** | ||
* Copyright 2009-2015 the original author or authors. | ||
* <p> | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* <p> | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* <p> | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.apache.ibatis.domain.blog; | ||
|
||
public class Tag { | ||
|
||
private int id; | ||
private String name; | ||
|
||
public int getId() { | ||
return id; | ||
} | ||
|
||
public void setId(int id) { | ||
this.id = id; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public void setName(String name) { | ||
this.name = name; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "Tag: " + id + " : " + name; | ||
} | ||
} |
Oops, something went wrong.