habe ich versucht Spring Transaktionsmanager mit Mybatis Mapper wie folgt in einer Implementierung eines ServiceFrühjahr/Mybatis Transaktionsrollbacks
@Service("myService")
class MyServiceImpl implements MyService
{
@Autowired
private MyMapper myMapper;
@Transactional(
value = "transactionManager",
propagation = Propagation.REQUIRED,
rollbackFor={Exception.class}
)
@Override
public void doStuff() {
myMapper.do1();
myMapper.do2();
throw new RuntimeException();
}
}
wo MyMapper abgebildet durch Mybatis zu verwenden. Mein tatsächlicher Code ist ein bisschen anders, aber ich habe ihn geändert, um How to use @Transactional annotation in mybatis-spring? zu ähneln. Der Dienst wird in der Controller-Klasse wie folgt verwendet.
@Controller
public class MyController {
@Autowired
private MyService myService;
@GetMapping(value = {"/some/url"})
public String someMethod(){
/*
some code
*/
myService.doStuff(); // this line is not wrapped in try/catch block
/*
some code
*/
return "myjsppage";
}
}
Von dem, was ich sammeln, Änderungen an DB in DO1() und do2() sollte zurückgerollt werden, aber sie bestehen aus irgendeinem Grund. Was vermisse ich? Hier ist meine XML-Konfigurations
<mybatis:scan base-package="com.mydomain.mapper" />
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydomain" />
<property name="username" value="uuuuuu" />
<property name="password" value="pppppp" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.mydomain.model"/>
<property name="configLocation" value="WEB-INF/mybatis-config.xml"/>
<property name="mapperLocations" value="classpath*:com/mydomain/mapper/*.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.mydomain.mapper" />
</bean>
Nö, verhält es sich immer noch die gleiche Art und Weise –
@ codemonkey_86531 Gibt es eine explizite Anfragen zwischen diesen beiden Betrieb außerhalb des Feder Kontext interagierten werden? Außerdem, welcher DB-Treiber Sie verwenden. Dies ist nur für meine Information – Rizwan
(1) Nein, nicht im Service (2) einfach nur alte mysql JDBC –