测试类
public class RunTestTx {
// 编程式事务
private static final Logger logger = LoggerFactory.getLogger(TestMapperScanner.class);
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-tx.xml");
// 事务控制
DataSourceTransactionManager transactionManager = (DataSourceTransactionManager) context.getBean("transactionManager");
// 数据库操作句柄
JdbcTemplate jdbcTemplate = (org.springframework.jdbc.core.JdbcTemplate) context.getBean("jdbcTemplate");
// 开始事务
TransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus transaction = transactionManager.getTransaction(def);
try {
String sql = "select * from role where name like concat('%', ?, '%')";
Object[] objs = {"111"};
List resultList = jdbcTemplate.query(sql, objs, (rs, rownum) -> {
Role role = new Role();
role.setId(rs.getInt("id"));
role.setName(rs.getString("name"));
role.setDesc(rs.getString("desc"));
return role;
});
if (logger.isDebugEnabled()) {
logger.debug(resultList.toString());
}
transactionManager.commit(transaction);
} catch (Exception ex) {
transactionManager.rollback(transaction);
}
}
}
测试结果
Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT
Acquired Connection [jdbc:mysql://127.0.0.1:3306/test, UserName=root@localhost, MySQL Connector/J] for JDBC transaction
Switching JDBC Connection [jdbc:mysql://127.0.0.1:3306/test, UserName=root@localhost, MySQL Connector/J] to manual commit
Executing prepared SQL query
Executing prepared SQL statement [select * from role where name like concat('%', ?, '%')]
[priv.dengjl.springmybatis.bean.Role@36c88a32, priv.dengjl.springmybatis.bean.Role@7880cdf3, priv.dengjl.springmybatis.bean.Role@5be6e01c, priv.dengjl.springmybatis.bean.Role@1c93084c, priv.dengjl.springmybatis.bean.Role@6ef888f6, priv.dengjl.springmybatis.bean.Role@10e92f8f, priv.dengjl.springmybatis.bean.Role@7ce3cb8e, priv.dengjl.springmybatis.bean.Role@78b66d36, priv.dengjl.springmybatis.bean.Role@5223e5ee, priv.dengjl.springmybatis.bean.Role@bef2d72, priv.dengjl.springmybatis.bean.Role@69b2283a, priv.dengjl.springmybatis.bean.Role@22a637e7, priv.dengjl.springmybatis.bean.Role@6fe7aac8, priv.dengjl.springmybatis.bean.Role@1d119efb, priv.dengjl.springmybatis.bean.Role@659a969b, priv.dengjl.springmybatis.bean.Role@76908cc0, priv.dengjl.springmybatis.bean.Role@2473d930, priv.dengjl.springmybatis.bean.Role@35047d03, priv.dengjl.springmybatis.bean.Role@49b0b76, priv.dengjl.springmybatis.bean.Role@769f71a9, priv.dengjl.springmybatis.bean.Role@4c9f8c13, priv.dengjl.springmybatis.bean.Role@5ae50ce6, priv.dengjl.springmybatis.bean.Role@6f96c77, priv.dengjl.springmybatis.bean.Role@be64738, priv.dengjl.springmybatis.bean.Role@3ba9ad43, priv.dengjl.springmybatis.bean.Role@49d904ec, priv.dengjl.springmybatis.bean.Role@48e4374, priv.dengjl.springmybatis.bean.Role@3d680b5a, priv.dengjl.springmybatis.bean.Role@4b5d6a01, priv.dengjl.springmybatis.bean.Role@4a22f9e2, priv.dengjl.springmybatis.bean.Role@3c419631, priv.dengjl.springmybatis.bean.Role@418e7838, priv.dengjl.springmybatis.bean.Role@61230f6a, priv.dengjl.springmybatis.bean.Role@3c130745, priv.dengjl.springmybatis.bean.Role@cd3fee8, priv.dengjl.springmybatis.bean.Role@3e2e18f2, priv.dengjl.springmybatis.bean.Role@470f1802, priv.dengjl.springmybatis.bean.Role@63021689]
Initiating transaction commit
Committing JDBC transaction on Connection [jdbc:mysql://127.0.0.1:3306/test, UserName=root@localhost, MySQL Connector/J]
Releasing JDBC Connection [jdbc:mysql://127.0.0.1:3306/test, UserName=root@localhost, MySQL Connector/J] after transaction
Returning JDBC Connection to DataSource