Я использую springboot + mybatis + MYSQL (innodb)
Когда я устанавливаю MYSQL autocommit = 0 и выполняю транзакции в своем коде.Я обнаружил, что сделка не совершена.Ниже приведен мой код:
источник данных:
spring.datasource.url=jdbc:mysql://localhost:3306/zzzz?characterEncoding=utf8&useSSL=false
spring.datasource.username=xxxx
spring.datasource.password=yyyy
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Конфигурация Mybatis транзакции:
@Configuration
@EnableTransactionManagement
public class MyBatisConfiguration {
@Autowired private DataSource dataSource;
@Bean @Primary
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
И мой сервис для выполнения транзакции:
@Service
public class AlohaService {
@Autowired private SqlSessionFactory sqlSessionFactory;
public void customizedSqlSessionInsert() {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserRoleMapper userRoleMapper = sqlSession.getMapper(UserRoleMapper.class);
try {
userRoleMapper.insert(new UserRole(0, "RRRRR", "ADMIN"));
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
sqlSession.rollback();
} finally {
sqlSession.close();
}
}
}
После выполнения метода customizedSqlSessionInsert
я обнаружил, что запись select не содержит новой строки RRRR,ADMIN
. Интересно то, что после запуска команды COMMIT
в MySQL GUI Tool запись появляется в MySQL.
Почему sqlSession.commit();
не работает?Кто-нибудь может мне помочь?