Как использовать транзакцию в mybatis? У меня есть две вставки, и я хочу в этом убедиться. Вторая вставка не будет выполнена, если первая. Извините за мой английский.
<route>
<from uri = "nomatterhere" />
<transacted/>
<to uri = "mybatis:insertHeader?statementType=Insert"/>
<to uri = "mybatis:insertBody?statementType=Insert"/>
</route>
Моя фасоль:
<bean id = "dataSource" class = "org.apache.commons.dbcp.BasicDataSource">
<property name = "driverClassName" value = "${database.driver_class_name}"/>
<property name = "url" value = "${database.url}"/>
<property name = "username" value = "${database.username}"/>
<property name = "password" value = "${database.password}"/>
</bean>
<bean id = "txManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name = "dataSource" ref = "dataSource"/>
</bean>
<bean id = "PROPAGATION_REQUIRED" class = "org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name = "transactionManager" ref = "txManager"/>
<property name = "propagationBehaviorName" value = "PROPAGATION_NESTED"/>
</bean>
@Редактировать
Я добавил бобы и маршрут.
эта сделка не работает. Я имею в виду, что когда что-то пойдет не так в insertBody (например, нулевое значение), заголовок все равно будет вставлен. Тогда я хочу подтвердить транзакцию. Как я могу этого добиться?
Я использую Spring 4.3.16v, Camel 2.21.1 и то же самое для mybatis
Вы можете обратиться к stackoverflow.com/questions/38292022/… и посмотреть, поможет ли он вам. Если нет, просьба предоставить более подробную информацию о вашем вопросе, как в упомянутом вопросе.
@IanLim Я отредактировал свой пост.





1) Какая у вас версия Spring, Apache Camel и Mybatis? 2) Прочтите раздел Участие в транзакциях под camel.apache.org/mybatis.html и укажите свои настройки для источника данных, SqlSessionFactoryBean и т. д.